Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 聚焦TextView时,TabController中的ListView将消失_Flutter - Fatal编程技术网

Flutter 聚焦TextView时,TabController中的ListView将消失

Flutter 聚焦TextView时,TabController中的ListView将消失,flutter,Flutter,我发现,如果ListView位于选项卡控制器内,则如果TextView处于焦点状态,则视图内的项目将消失。这是虫子吗 @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text(widget.title), ), body: new Column( children: <Widget>[ new T

我发现,如果ListView位于选项卡控制器内,则如果TextView处于焦点状态,则视图内的项目将消失。这是虫子吗

@override
Widget build(BuildContext context) {
return new Scaffold(
  appBar: new AppBar(
    title: new Text(widget.title),
  ),
  body: new Column(
    children: <Widget>[
      new TextField(),
      new Expanded(
        child: DefaultTabController(
          length: 2,
          child: Scaffold(
            appBar: AppBar(
              title: TabBar(
                tabs: [
                  Tab(text: 'Info'),
                  Tab(text: 'News'),
                ],
              ),
            ),
            body: TabBarView(
              children: [
                ListView(
                  children: <Widget>[
                    ListTile(title: Text('row 1')),
                    ListTile(title: Text('row 2')),
                    ListTile(title: Text('row 3')),
                  ],
                ),
                Text("abc"),
              ],
            ),
          ),
        ),
      )
    ],
  ),
  floatingActionButton: new FloatingActionButton(
    onPressed: _incrementCounter,
    tooltip: 'Increment',
    child: new Icon(Icons.add),
  ), // This trailing comma makes auto-formatting nicer for build methods.
);
}
@覆盖
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(widget.title),
),
正文:新栏目(
儿童:[
新建TextField(),
新扩展(
子级:DefaultTabController(
长度:2,
孩子:脚手架(
appBar:appBar(
标题:TabBar(
选项卡:[
选项卡(文本:“信息”),
选项卡(文本:“新闻”),
],
),
),
正文:选项卡视图(
儿童:[
列表视图(
儿童:[
ListTile(标题:文本(“第1行”),
ListTile(标题:文本(“第2行”),
ListTile(标题:文本(“第3行”),
],
),
文本(“abc”),
],
),
),
),
)
],
),
floatingActionButton:新的floatingActionButton(
按下时:\ u递增计数器,
工具提示:“增量”,
子:新图标(Icons.add),
),//此尾随逗号使生成方法的自动格式设置更方便。
);
}
从下面的第一张图片中可以看到,列表视图最初是显示的。但是当我点击图片2中的文本字段后,列表就消失了


不用两个脚手架也可以得到同样的效果,请看以下内容:

    @override
      Widget build(BuildContext context) {
        return new DefaultTabController(
            length: 2,
            child: Scaffold(
              appBar: new AppBar(
                title: new Text("title test"),
                bottom: PreferredSize(
                  child: Column(
                    children: <Widget>[
                      Container(
                        color: Colors.white,
                        child: TextField(),
                      ),
                      TabBar(
                        indicatorColor: Colors.white,
                        tabs: [
                          Tab(text: 'Info'),
                          Tab(text: 'News'),
                        ],
                      ),
                    ],
                  ),
                  preferredSize: Size.fromHeight(100.0),
                ),
              ),
              body: TabBarView(
                children: [
                  ListView(
                    children: <Widget>[
                      ListTile(title: Text('row 1')),
                      ListTile(title: Text('row 2')),
                      ListTile(title: Text('row 3')),
                    ],
                  ),
                  Text("abc"),
                ],
              ),
              floatingActionButton: new FloatingActionButton(
                onPressed: () => null,
                tooltip: 'Increment',
                child: new Icon(Icons.add),
              ), // This trailing comma makes auto-formatting nicer for build methods.
            ));
      }
@覆盖
小部件构建(构建上下文){
返回新的DefaultTabController(
长度:2,
孩子:脚手架(
appBar:新的appBar(
标题:新文本(“标题测试”),
底部:首选尺寸(
子:列(
儿童:[
容器(
颜色:颜色,白色,
子项:TextField(),
),
塔巴(
指示颜色:颜色。白色,
选项卡:[
选项卡(文本:“信息”),
选项卡(文本:“新闻”),
],
),
],
),
首选尺寸:尺寸。从高度(100.0),
),
),
正文:选项卡视图(
儿童:[
列表视图(
儿童:[
ListTile(标题:文本(“第1行”),
ListTile(标题:文本(“第2行”),
ListTile(标题:文本(“第3行”),
],
),
文本(“abc”),
],
),
floatingActionButton:新的floatingActionButton(
onPressed:()=>null,
工具提示:“增量”,
子:新图标(Icons.add),
),//此尾随逗号使生成方法的自动格式设置更方便。
));
}

如果您正在使用和

resizeToAvoidBottomPadding: false,

在现有的scaffold中。

您的用户界面很奇怪,您想实现什么?您可以认为文本字段用于获取用户名。然后,选项卡由可与输入的用户名一起使用的选项类别组成,例如,选项可以是“使用您的用户名创建日语自我介绍”。请注意,textfield不是搜索,因为选项是静态的(它们适用于任何值)。让我知道是否有更好的模式,我可以遵循。今晚我会试试你的解决方案,谢谢!我已经在没有使用两个脚手架的情况下发布了我的解决方案。看一看