【问题标题】:ListView builder inside a ListView BuilderListView 构建器内的 ListView 构建器
【发布时间】:2019-04-04 09:56:47
【问题描述】:

我正在尝试使用 Listview 构建器动态创建无限行。在每一行内我需要添加无限数量的文本字段。为什么嵌套的 Listview 构建器不起作用?

我尝试使用 Row,然后添加容器,它可以工作。为什么 Listview builder 不起作用?


import 'package:flutter/material.dart';

void main()
{
  runApp(MainScreen());
}

class MainScreen extends StatefulWidget
{
  @override
  State<StatefulWidget> createState() {

    return _MainScreenState();
  }
}

class _MainScreenState extends State<MainScreen>{

  int number = 1;
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
  }


  @override
  Widget build (BuildContext ctxt) {

    var fieldslist = <Widget>[];

    for (var i = 0; i < 10; i++) {
      fieldslist.add(

          new Container(

              width: 100,
              padding: EdgeInsets.all(4),
              child:TextField(
                  keyboardType: TextInputType.number
              )
          )
      );
    }

    return MaterialApp(
      home: Scaffold(
        appBar: new AppBar(title: new Text("Scores Screen"),),
        body: new Column(
          children: <Widget>[

            new Row(
              children: <Widget>[
                new RaisedButton(
                    child: new Text("Add Scores"),
                    onPressed: (){

                      number++;
                      this.setState(()=>{});


                    })
              ],
            ),
            new Expanded(
                child: new ListView.builder
                  (
                    itemCount: number,
                    itemBuilder: (BuildContext ctxt, int index) {

                          new Expanded(

                              child: new ListView.builder(

                                  scrollDirection: Axis.horizontal,

                                  itemCount: 7,
                                  itemBuilder: (BuildContext ctxt, int index){

                                    return new Container(

                                        width: 100,
                                        padding: EdgeInsets.all(4),
                                    child:TextField(
                                            keyboardType: TextInputType.number
                                        )
                                    );


                                  }
                              )

                          );

                    }
                )
            )
          ],
        )
      )
    );
  }


}



当我点击按钮时,屏幕是空白的,没有任何反应。

【问题讨论】:

    标签: listview flutter


    【解决方案1】:

    如果我理解正确,你想要一个水平滚动列表在你的垂直列表视图中吗?

    如果是,你有没有为你的水平列表尝试过这样的事情:

    Row(
            children: <Widget>[
              SizedBox(
                width: MediaQuery.of(context).size.width * 0.85,
                child: SingleChildScrollView(
                  scrollDirection: Axis.horizontal,
                  child: Row(children: _yourList),
                ),
              )
            ],
          )
    

    【讨论】:

    • 是的,这正是我想要的。我试图集成您的代码,但这也无济于事。当我单击按钮时没有任何反应。我能够添加我想要的功能。 ``` new Row(children : )```.但我无法滚动,它在 UI 屏幕上给了我错误。
    • 好吧,如果你想让你的号码在印刷时更新,你可以把你的'number++'放在你的 setState 方法中。 (欢迎来到stackoverflow,我刚看到)
    • 关于滚动问题,您必须使用这些小部件。也许您可以将我的代码作为孩子放在卡片中? (我现在不能尝试)
    • 刚刚想通了。用 SingleChildScrollView 中的小部件列表包装了行,它可以工作。非常感谢,妮可,我很高兴现在能成为这个社区的一员 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2022-01-24
    • 2019-02-14
    • 2020-02-22
    • 2022-12-07
    • 1970-01-01
    相关资源
    最近更新 更多