Flutter 聚焦TextView时,TabController中的ListView将消失
我发现,如果ListView位于选项卡控制器内,则如果TextView处于焦点状态,则视图内的项目将消失。这是虫子吗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
@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不是搜索,因为选项是静态的(它们适用于任何值)。让我知道是否有更好的模式,我可以遵循。今晚我会试试你的解决方案,谢谢!我已经在没有使用两个脚手架的情况下发布了我的解决方案。看一看