我BottomNavigationBar
中有一个widget
,当我想在其中一个widget
项中显示一个新的Navigator
时,它会在我的屏幕上显示一个新屏幕最后widget
。
如何用BottomNavigationBar
的项目替换新的小部件?
主窗口小部件状态:
class _MainWidgetState extends State<MainWidget> {
int _currentIndex = 0;
final List<Widget> _children = [
HomeWidget(title: AppConstants.appName),
ExerciseWidget(title: AppConstants.exercise),
ProfileWidget(title: AppConstants.profile),
];
.
.
个人资料小部件状态:
class _ProfileWidgetState extends State<ProfileWidget> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.settings),
onPressed: () {
ViewUtils.openWidget(context, SettingWidget());
},
),
),
);
}
openWidget
在ViewUtils中:
static void openWidget(BuildContext context, Widget widget) {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => widget
),
);
}
我需要Navigator
在Android SettingWidget
中像SupportFragmentManager
一样显示我的getSupportFragmentManager().beginTransaction().replace(..)
。
我该怎么做?
更多信息
我有一个将pushAndRemoveUntil
与ModalRoute.withName('/main');
一起使用的Splash Widget,而Main Widget使用某些项目创建了BottomNavigationBar
。
在其中之一中,我单击设置按钮,其中显示了一个新的小部件,该显示发生在Navigator.of(context).push
或Navigator.of(context).pushReplacement
上。
这两个选项均在主窗口小部件上显示了我的新窗口小部件,而不替换为BottomNavigationBar
中的其中一个项目。