Flutter 颤振:堆栈-后台-TextFormField-焦点问题

Flutter 颤振:堆栈-后台-TextFormField-焦点问题,flutter,Flutter,我有一堆后台小部件。 这些后台小部件中的每一个都引用一个MaterialApp来显示表单。 每个表单都包含几个TextFormFields 我遇到的问题是,第一个和第二个后台项TextFormFields从未获得焦点(当然,考虑到正确的后台:索引) 为了让它工作,如果我把第一个舞台外的第三个位置(因此在顶部),一切都很好 这很可能来自堆栈或后台的概念 有没有一种方法可以强制等同于“z指数”? 我还尝试使用IndexedStack,但结果是相同的 除了舞台外,我应该用别的东西吗 非常感谢你的帮助

我有一堆后台小部件。 这些后台小部件中的每一个都引用一个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)正在工作。。。