У меня есть стек из списка виджетов за сценой.
Каждый из этих виджетов Offstage ссылается на MaterialApp для отображения формы.
Каждая из этих форм содержит несколько TextFormFields.
Проблема, с которой я столкнулся, заключается в том, что первый и второй элементы Offstage TextFormFields никогда не получают фокус (конечно, учитывая правильный сценарий offstage: index).
Для того, чтобы заставить его работать, если я помещаю первый 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,
),
),
]),
),
);
}