在 Flutter 中实现双向列表视图

use*_*522 4 widget scrollview flutter

你如何在 Flutter 中实现双向滚动视图?ListView 有一个 scrollDirection 字段,但它只能采用 Axis.horizo​​ntal 或 Axis.vertical。有可能两者兼得吗?

Col*_*son 5

这是使用外部的潜在解决方案SingleChildScrollView。如果屏幕外s 被拆除,您也可以使用 aPageView的多个。ListViewsListView

import 'package:flutter/material.dart';

void main() {
  runApp(new MaterialApp(
    home: new MyHomePage(),
  ));
}

class MyHomePage extends StatelessWidget {
  Widget build(BuildContext context) {
    ThemeData themeData = Theme.of(context);
    return new Scaffold(
      body: new SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        child: new SizedBox(
          width: 1000.0,
          child: new ListView.builder(
            itemBuilder: (BuildContext context, int i) {
              return new Row(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: new List.generate(5, (int j) {
                  return new Text("$i,$j", style: themeData.textTheme.display2);
                }),
              );
            },
          ),
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)


Col*_*son 1

请参阅我对这个问题的回答,我发布并自我回答。我不知道用 single 来做到这一点的方法Scrollable,尽管我可以想象它是有用的。

你无法用无限长度轻松解决这个问题,ListView.builder 因为它只朝一个方向发展。如果要在两个方向上环绕,可以使用 Stack两个方向Viewport相反的 s 来模拟双向环绕。

这个问题也有一个代码示例(如果您不想换行,您可能需要稍微修改答案)。