我正在處理底部導航欄,但我無法完全回到主螢屏。
如果我從底部導航欄視圖專案中選擇兩個以上的導航按鈕,那么當我按下后退按鈕時,它會關閉應用程式。
我想在按下后退按鈕時回到家。
這是我的代碼。
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
static const String _title = 'Flutter Code Sample';
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: _title,
home: MyStatefulWidget(),
);
}
}
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key? key}) : super(key: key);
@override
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _selectedIndex = 0;
static const TextStyle optionStyle =
TextStyle(fontSize: 30, fontWeight: FontWeight.bold);
static const List<Widget> _widgetOptions = <Widget>[
Text(
'Index 0: Home',
style: optionStyle,
),
Text(
'Index 1: Business',
style: optionStyle,
),
Text(
'Index 2: School',
style: optionStyle,
),
];
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('BottomNavigationBar Sample'),
),
body: Center(
child: _widgetOptions.elementAt(_selectedIndex),
),
bottomNavigationBar: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.business),
label: 'Business',
),
BottomNavigationBarItem(
icon: Icon(Icons.school),
label: 'School',
),
],
currentIndex: _selectedIndex,
selectedItemColor: Colors.amber[800],
onTap: _onItemTapped,
),
);
}
}
uj5u.com熱心網友回復:
后退按鈕的默認行為是關閉您在頂部彈出的路線。在這種情況下,您還沒有彈出新路由。您剛剛在新索引處顯示了一個小部件。所以沒有什么可以關閉的。
您可以通過以下選項回傳后退按鈕:
在
BottomNavigationBar自來水,展現了新的途徑Navigator.of(context).push(...)。然后后退按鈕將關閉它。但是使用這種方法,您的應用程式會在每個底部導航上顯示新螢屏,并且這些螢屏不會保留狀態。使用
WillPopScope小部件攔截后退按鈕事件并執行自定義操作,如下所示:https : //stackoverflow.com/a/44637374/11382675但是使用這種方法,您必須手動將導航堆疊保留在某處。當您添加新螢屏時,這將變得不可縮放。
但我認為真正的問題是導航設計本身。現在每個選項卡都保留自己的導航歷史已成為一種習慣。因此,當您來回切換選項卡時,每個選項卡仍然允許您獨立于其他選項卡的歷史記錄回傳自己的歷史記錄。
要實作這一點,第一步是確定切換標簽頁不應通過后退按鈕撤消。信步驟可以在這里找到:https : //medium.com/flutter-community/flutter-navigation-maintaining-tab-state-while-navigating-bottomnavigationbar-6009fbceb59c
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381939.html
上一篇:如何禁用此組件末尾的按鈕?
