我有一堆Offstage Widgets列表。 这些Offstage小部件中的每一个都引用MaterialApp来显示表单。 每个表单都包含几个TextFormFields。
我遇到的问题是第一个和第二个Offstage项TextFormFields永远不会得到焦点(当然考虑正确的后台:索引)。
为了使它工作,如果我把第一个Offstage放到第三个位置(因此在顶部),一切正常。
这很可能来自Stack的概念或来自Offstage。
有没有办法强制等同于" z-index "? 我也试过使用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,
),
),
]),
),
);
}
答案 0 :(得分:0)
在试图找到类似问题的解决方案时偶然发现了这个问题。您可能已经继续前进,但是我很确定这与https://github.com/flutter/flutter/issues/17098中描述的问题相同。希望这对以后的人有所帮助。