Итак, у меня есть приложение для флаттера, в котором есть две страницы, между которыми можно переключаться с помощью двух кнопок. Я хочу, чтобы они неявно анимировались при нажатии кнопки. Код:
import 'package:auxin/pages/home.dart';
import 'package:auxin/pages/bookmarks.dart';
import 'package:flutter/material.dart';
void main() =>
runApp(MaterialApp(home: MyApp(), debugShowCheckedModeBanner: false));
class MyApp extends StatefulWidget {
MyApp({Key key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool homeselected = true;
bool bookmarkselected = false;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: Color.fromRGBO(0, 0, 0, 1),
child: Column(children: <Widget>[
Container(
height: 250,
child: Row(
children: <Widget>[
Expanded(
child: Center(
child: Column(
children: <Widget>[
SizedBox(
height: 90,
),
Text(
'AUXIN',
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.w800,
fontSize: 20),
),
SizedBox(height: 40),
Row(
children: <Widget>[
Expanded(
flex: 1,
child: Padding(
padding: EdgeInsets.fromLTRB(40, 0, 10, 0),
child: FlatButton(
color: homeselected ? Colors.pink : null,
onPressed: () => setState(() => {
homeselected = true,
bookmarkselected = false
}),
child: Text('HOME',
style: TextStyle(color: Colors.white)),
shape: RoundedRectangleBorder(
side: BorderSide(
color: Colors.pink,
width: 1,
style: BorderStyle.solid),
borderRadius: BorderRadius.circular(50)),
),
),
),
Expanded(
flex: 1,
child: Padding(
padding:
const EdgeInsets.fromLTRB(10, 0, 40, 0),
child: FlatButton(
color: homeselected ? null : Colors.pink,
onPressed: () => setState(() => {
homeselected = false,
bookmarkselected = true
}),
child: Text('BOOKMARKS',
style: TextStyle(color: Colors.white)),
shape: RoundedRectangleBorder(
side: BorderSide(
color: Colors.pink,
width: 1,
style: BorderStyle.solid),
borderRadius: BorderRadius.circular(50)),
),
),
),
],
),
],
),
),
flex: 1,
),
],
),
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(30),
bottomRight: Radius.circular(30)),
color: Color.fromRGBO(27, 27, 30, 0.9)),
),
AnimatedContainer(
duration: Duration(milliseconds: 1000),
child: homeselected ? Home() : Bookmark())
]),
),
);
}
}
Дом и Закладка - это разные виджеты, которые есть в других файлах. Я хочу, чтобы контейнер плавно анимировался при переходе от одного виджета к другому, чего на самом деле не происходит.