Я строю каркас с TabBar в качестве BottomNavigationBar и TabView в качестве тела. Проблема в том, что когда я открываю клавиатуру для ввода данных в форму, по какой-то причине TabBar меняет индекс (даже если внутри TabView нет). Почему это происходит? Как я могу это проверить?
class _SignState extends State<Sign> with TickerProviderStateMixin {
static Container navBar;
static TabBarView pages;
@override
Widget build(BuildContext context) {
final tabController = TabController(length: 2, vsync: this);
print(tabController.index);
void _goLogin() {
// tabController.animateTo(tabController.previousIndex);
}
pages = TabBarView(controller: tabController, children: [
LoginPage(
keyRoot: widget.keyRoot,
),
RegisterPage(
onRegistered: _goLogin,
),
]);
navBar = Container(
height: 50,
alignment: Alignment.center,
padding: EdgeInsets.only(left: 50, right: 50),
child: Stack(
alignment: Alignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10.0),
child: Container(
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.circular(30),
border: Border.all(
width: 0.3,
color: Colors.black.withOpacity(0.5),
style: BorderStyle.solid))),
),
TabBar(
controller: tabController,
labelPadding: EdgeInsets.all(10),
labelColor: Colors.white,
unselectedLabelColor: Theme.of(context).primaryColor,
indicator: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black,
blurRadius: 1,
)
],
borderRadius: BorderRadius.circular(30),
color: Theme.of(context).primaryColor,
),
tabs: [Text('Accedi'), Text('Registrati')]),
],
),
);
// Main page
return Scaffold(
body: Column(
children: <Widget>[
_returnTop(),
Expanded(
child: pages,
),
],
),
persistentFooterButtons: _returnButtons(),
bottomNavigationBar: Padding(
padding: const EdgeInsets.only(bottom: 15),
child: navBar,
),
);
}
Widget _returnTop() {
return Stack(children: <Widget>[
Center(child: Image.asset('assets/logo_sign.png')),
Positioned(
bottom: 0,
right: 20,
child: InkWell(
splashColor: Colors.transparent,
child: Text('salta >'),
onTap: () {
Navigator.pushNamed(context, "/home", arguments: widget.keyRoot);
},
),
)
]);
}
List<Widget> _returnButtons() {
return [
Text('oppure con'),
IconButton(
//TODO: Aggiungere funzioni
color: Theme.of(context).accentColor,
icon: Icon(FontAwesomeIcons.googlePlusG),
tooltip: 'Login con Google',
onPressed: () {}),
IconButton(
//TODO: Aggiungere funzioni
color: Theme.of(context).accentColor,
icon: Icon(FontAwesomeIcons.facebook),
tooltip: 'Login con Facebook',
onPressed: () {}),
IconButton(
//TODO: Aggiungere funzioni
color: Theme.of(context).accentColor,
icon: Icon(FontAwesomeIcons.twitter),
tooltip: 'Login con Twitter',
onPressed: () {}),
];
}
}
Изменено: Это весь мой код:)