返回页面时记住 bottomNavigation bar 的状态 flutter
Remember the state of bottomNavigation bar when back to a page flutter
在main_activity.dart
中,有4个底部导航栏,分别命名为A、B、C、D。
main_activity.dart
class MainPage extends StatefulWidget {
static const ROUTE = '/mainPage';
@override
State<StatefulWidget> createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
int _selectedIndex = 2;
final _tabs = [
A(),
B(),
C(),
D(),
];
@override
Widget build(BuildContext context) {
return WillPopScope(
child: Scaffold(
body: _tabs[_selectedIndex],
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
currentIndex: _selectedIndex,
items: [
...
],
onTap: (index) => setState(() {
_selectedIndex = index;
}),
),
),
onWillPop: () => _requestPop(context),
);
}
}
最初它将在选项卡 C 中打开页面。当我单击选项卡 B 时,它将显示包含浮动操作按钮的 B 页面。单击浮动操作按钮时,将调用 add_B.dart
。我的问题是当我单击 add_B.dart
中的后退按钮时,它将返回到 main_activity
并打开选项卡 C 页面。我怎样才能让它打开标签页 B 页面?
add_B.dart
onWillPop: (){
_backToPreviousPage(context);
},
void _backToPreviousPage(BuildContext context) {
Navigator.of(context).pushReplacementNamed(MainPage.ROUTE);
}
您可以创建 global.dart
文件并在其中声明 int _selectedIndex = 2;
如果您将 _selectedIndex
设置为某个值,则在您使用它时导入该文件,该值将在整个应用程序中与您一起保存。
在main_activity.dart
中,有4个底部导航栏,分别命名为A、B、C、D。
main_activity.dart
class MainPage extends StatefulWidget {
static const ROUTE = '/mainPage';
@override
State<StatefulWidget> createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
int _selectedIndex = 2;
final _tabs = [
A(),
B(),
C(),
D(),
];
@override
Widget build(BuildContext context) {
return WillPopScope(
child: Scaffold(
body: _tabs[_selectedIndex],
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
currentIndex: _selectedIndex,
items: [
...
],
onTap: (index) => setState(() {
_selectedIndex = index;
}),
),
),
onWillPop: () => _requestPop(context),
);
}
}
最初它将在选项卡 C 中打开页面。当我单击选项卡 B 时,它将显示包含浮动操作按钮的 B 页面。单击浮动操作按钮时,将调用 add_B.dart
。我的问题是当我单击 add_B.dart
中的后退按钮时,它将返回到 main_activity
并打开选项卡 C 页面。我怎样才能让它打开标签页 B 页面?
add_B.dart
onWillPop: (){
_backToPreviousPage(context);
},
void _backToPreviousPage(BuildContext context) {
Navigator.of(context).pushReplacementNamed(MainPage.ROUTE);
}
您可以创建 global.dart
文件并在其中声明 int _selectedIndex = 2;
如果您将 _selectedIndex
设置为某个值,则在您使用它时导入该文件,该值将在整个应用程序中与您一起保存。