Flutter 颤振:堆栈-后台-TextFormField-焦点问题
我有一堆后台小部件。 这些后台小部件中的每一个都引用一个MaterialApp来显示表单。 每个表单都包含几个TextFormFields 我遇到的问题是,第一个和第二个后台项TextFormFields从未获得焦点(当然,考虑到正确的后台:索引) 为了让它工作,如果我把第一个舞台外的第三个位置(因此在顶部),一切都很好 这很可能来自堆栈或后台的概念 有没有一种方法可以强制等同于“z指数”? 我还尝试使用IndexedStack,但结果是相同的 除了舞台外,我应该用别的东西吗 非常感谢你的帮助 代码如下:Flutter 颤振:堆栈-后台-TextFormField-焦点问题,flutter,Flutter,我有一堆后台小部件。 这些后台小部件中的每一个都引用一个MaterialApp来显示表单。 每个表单都包含几个TextFormFields 我遇到的问题是,第一个和第二个后台项TextFormFields从未获得焦点(当然,考虑到正确的后台:索引) 为了让它工作,如果我把第一个舞台外的第三个位置(因此在顶部),一切都很好 这很可能来自堆栈或后台的概念 有没有一种方法可以强制等同于“z指数”? 我还尝试使用IndexedStack,但结果是相同的 除了舞台外,我应该用别的东西吗 非常感谢你的帮助
Widget build(BuildContext context) {
return new Scaffold(
backgroundColor: Color(0xF4FFFFFF),
bottomNavigationBar: new Theme(
data: Theme.of(context).copyWith(
canvasColor: Colors.amber[700],
primaryColor: Colors.white,
textTheme: Theme
.of(context)
.textTheme
.copyWith(caption: new TextStyle(color: Colors.grey[800])),
),
child: new BottomNavigationBar(
iconSize: 8.0,
currentIndex: index,
onTap: (int index) {
setState(() {
this.index = index;
});
},
type: BottomNavigationBarType.fixed,
items: <BottomNavigationBarItem>[
new BottomNavigationBarItem(
title: new Text('Sign In',
style: new TextStyle(fontSize: 20.0)),
icon: new Container(height: 8.0),
),
new BottomNavigationBarItem(
title: new Text('Register',
style: new TextStyle(fontSize: 20.0)),
icon: new Text('No account yet',
style: new TextStyle(fontSize: 10.0)),
),
new BottomNavigationBarItem(
title: new Text('lost password',
style: new TextStyle(fontSize: 12.0)),
icon: new Container(height: 8.0),
),
]),
),
body: new SafeArea(
top: false,
bottom: false,
child: new Stack(children: <Widget>[
new Offstage(
offstage: index != 0,
child: new MaterialApp(
home: new LoginForm(),
debugShowCheckedModeBanner: false,
)),
new Offstage(
offstage: index != 1,
child: new MaterialApp(
home: new RegisterForm(),
debugShowCheckedModeBanner: false,
),
),
new Offstage(
offstage: index != 2,
child: new MaterialApp(
home: new LostPasswordForm(),
debugShowCheckedModeBanner: false,
),
),
]),
),
);
}
小部件构建(构建上下文){
归还新脚手架(
背景颜色:颜色(0xF4FFFFFF),
底部导航栏:新主题(
数据:Theme.of(context).copyWith(
画布颜色:颜色。琥珀色[700],
原色:颜色。白色,
text主题:主题
.of(上下文)
.文本主题
.copyWith(标题:新文本样式(颜色:Colors.grey[800]),
),
子项:新的底部导航栏(
iconSize:8.0,
当前索引:索引,
onTap:(int索引){
设置状态(){
这个指数=指数;
});
},
类型:BottomNavigationBarType.fixed,
项目:[
新海底导航气压计(
标题:新文本(“登录”,
样式:新文本样式(fontSize:20.0)),
图标:新容器(高度:8.0),
),
新海底导航气压计(
标题:新文本(“寄存器”,
样式:新文本样式(fontSize:20.0)),
图标:新文本('还没有帐户',
样式:新文本样式(fontSize:10.0)),
),
新海底导航气压计(
标题:新文本(“密码丢失”,
样式:新文本样式(fontSize:12.0)),
图标:新容器(高度:8.0),
),
]),
),
正文:新安全区(
上图:错,
底部:错误,
子级:新堆栈(子级:[
新后台(
后台:索引!=0,
孩子:新材料pp(
主页:新的LoginForm(),
debugShowCheckedModeBanner:false,
)),
新后台(
后台:索引!=1,
孩子:新材料pp(
主页:新注册表执行(),
debugShowCheckedModeBanner:false,
),
),
新后台(
后台:索引!=2,
孩子:新材料pp(
主页:新的LostPasswordForm(),
debugShowCheckedModeBanner:false,
),
),
]),
),
);
}
在试图找到类似问题的解决方案时,偶然发现了这个问题。您可能已经离开了,但我非常确定这与中描述的问题相同。希望这对将来的人有所帮助。你为什么不使用Navigator
或PageView
/TabView
?甚至只是一个开关或if/else-如果你不需要页面之间的任何动画,你可以只构建你想要显示的表单…即使你们都是对的,该问题的主要目的是查看是否有任何原因阻止TextFormField在问题中解释的情况下获得焦点,而其他小部件(如RaisedButton)正在工作。。。