在main_activity.dart
中,有四个底部导航栏,分别名为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);
}
答案 0 :(得分:2)
您可以创建global.dart
文件,并在其中声明int _selectedIndex = 2;
如果将_selectedIndex
设置为某个值,则在每次使用该文件时都将其导入,该值将随应用程序一起保存。