我想创建一个画布,整个列是可滑动的.但是我在listview.Builder中使用的方法(下面的代码)滚动不起作用.我怎么才能解决这个问题呢?我需要全屏滚动才能工作.

我也试过在列表视图中使用扩展,它可以工作,但顶部文本和底部容器是固定的,我不想这样.

我是移动开发的新手,有点困惑哈哈哈. 代码:

class _CursosPageState extends State<CursosPage> {
  int count = 4;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Container(
        color: Colors.white,
        child: SingleChildScrollView(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
           children: [
             SizedBox(height: 15),
             Text(
               'text text text',
               style: TextStyle(fontSize: 20),
             ),
             // Expanded(
             //   child:
             ListView.builder(
                shrinkWrap: true,
                itemCount: count,
                itemBuilder: (BuildContext context, int index) {
                  return Container(
                    margin: EdgeInsets.all(10),
                    height: 150,
                    decoration: BoxDecoration(
                      color: Colors.blue,
                      borderRadius: BorderRadius.circular(10),
                    ),
                   );
                  },
                ),
               // ),
               Center(
                 child: Container(
                   height: 150,
                   width: 300,
                   decoration: BoxDecoration(
                     color: Colors.red,
                     borderRadius: BorderRadius.circular(10),
                   ),
                  ),
                )
               ],
             ),
            ),
          ),
         );
        }
   }

推荐答案

您不需要使用SingleChildScrollView,您可以使用ListView作为TopLevel小部件.

class _CursosPageState extends State<CursosPage> {
  int count = 4;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: ListView(
        children: [
          Container(
            color: Colors.white,
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                SizedBox(height: 15),
                Text(
                  'text text text',
                  style: TextStyle(fontSize: 20),
                ),
                for (int i = 0; i < count; i++)
                  Container(
                    margin: EdgeInsets.all(10),
                    height: 150,
                    decoration: BoxDecoration(
                      color: Colors.blue,
                      borderRadius: BorderRadius.circular(10),
                    ),
                  ),
                Center(
                  child: Container(
                    height: 150,
                    width: 300,
                    decoration: BoxDecoration(
                      color: Colors.red,
                      borderRadius: BorderRadius.circular(10),
                    ),
                  ),
                )
              ],
            ),
          ),
        ],
      ),
    );
  }
}

或在顶部放置固定文本

class _CursosPageState extends State<CursosPage> {
  int count = 4;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Container(
        color: Colors.white,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            SizedBox(height: 15),
            Text(
              'text text text',
              style: TextStyle(fontSize: 20),
            ),
            Expanded(
              child: ListView.builder(
                shrinkWrap: true,
                itemCount: count,
                itemBuilder: (BuildContext context, int index) {
                  return Container(
                    margin: EdgeInsets.all(10),
                    height: 150,
                    decoration: BoxDecoration(
                      color: Colors.blue,
                      borderRadius: BorderRadius.circular(10),
                    ),
                  );
                },
              ),
            ),
            Center(
              child: Container(
                height: 150,
                width: 300,
                decoration: BoxDecoration(
                  color: Colors.red,
                  borderRadius: BorderRadius.circular(10),
                ),
              ),
            )
          ],
        ),
      ),
    );
  }
}

一旦您灵活地使用了listView,您就可以使用CustomScrollView来处理复杂的场景

Flutter相关问答推荐

Flutter ReorderableListView在可滚动父级中无法完美工作

如何让GridView.builder用另外两个小部件来占据屏幕的剩余部分

SingleChildScrollView正在将Container的高度限制为子对象,尽管使用了Expanded Inside Row()

如何实现Flutter 梳理机图像的小量移动

如何删除使用isscllable时出现的左边距?

如何在Ffltter 3.16中设置标准的提升按钮主题?

如何在Date Time类中只显示日期?

任务';:app:check DebugDuplicateClasss';的Ffltter Share_plus抛出执行失败

Flutter 附近的连接

GridView 渲染项目之间有微小的间隙

带按钮的 Riverpod future Provider

hooks_riverpod 有用途吗

在 Flutter 中更改喜欢按钮的 colored颜色

输入处于活动状态时如何设置文本字段标签的样式?

Flutter snapShot.hasData 为假但响应有数据

使用 mocktail 包进行单元测试时,类型Null不是Future类型的子类型

如何在Flutter 中制作自定义微调器?

如何在Flutter 中将列表的模型类型转换为数组?

在 Flutter 中更新对象实例属性的最佳实践是什么?该实例嵌套在提供程序类的映射中,如下所示

FLUTTER+SQL:在 ListViewBuilder 中显示数据库中的数据