Flutter頁面跳轉
使用Flutter切換到一個新介面,並且能跳回來
在一個App中一般會有很多頁面,這些頁面需要相互跳轉,傳遞資訊並進行交換。比如列表要跳到詳情,活動入口跳轉到活動頁面等等。Android中的頁面可以是Activity;iOS中使用ViewController。在Flutter中,是如何進行頁面跳轉的呢?
1、使用Navigator來切換頁面。
- Navigator.push: 跳到另一個頁面
- Navigator.pop: 從當前頁面回退到上一個頁面
首先需要建立兩個頁面,FirstPage和SecondPage。程式碼如下:
class FirstPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(appBar: AppBar(title: Text('First page'),),
body: Center(child: RaisedButton(
child: Text('Go to 2nd page'),
onPressed: () {
print('This is first page');
// 執行想要的操作..........
Navigator.push(context,
MaterialPageRoute(builder: (context) => SecondPage()));
}),),);
}
}
class SecondPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(appBar: AppBar(title: Text('Second page'),),
body: Center(child: RaisedButton(
child: Text("Go back"),
onPressed: () {
print('This is 2nd page');
// 執行操作........
Navigator.pop(context);
}),),);
}
}
如上面程式碼用Navigator.push跳轉去第二個介面,push方法會向棧中新增一個由Navigator管理的Route。push方法接受一個Route(暫稱為路由),這裡新建一個Route,使用用MaterialPageRoute。
在第二個頁面中用Navigator.pop回到第一個介面Navigator.pop會移除navigator管理的當前的路由(效果是移除當前介面)。
2、 使用路由統一管理跳轉
上面只有兩個頁面,所以直接在程式碼中實現跳轉就可以了。但是實際專案中會有很多頁面,如果每個頁面都這樣跳轉,就會顯的非常混亂,並且不能統一管理跳轉。
步驟:
1 註冊程式入口通過onGenerateRoute統一註冊路由
2 定義相應的頁面對應的路徑
3 根據路徑跳轉到對應的頁面
不多說,直接上程式碼:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder<GlobalBloc, GlobalState>(builder: (_, state) {
return MaterialApp(
showPerformanceOverlay: state.showPerformanceOverlay,
title: 'Flutter Widgets',
debugShowCheckedModeBanner: false,
onGenerateRoute: XRouter.generateRoute,
theme: ThemeData(
primarySwatch: state.themeColor,
fontFamily: state.fontFamily,
),
home: XSplash(),
);
});
}
}
自定義XRouter類
class XRouter {
static const String firstpage = 'firstpage';
static const String secondpage = 'secondpage';
static Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
//根據名稱跳轉相應頁面
case firstpage:
return Right2LeftRouter(child: FirstPage());
case secondpage:
return Right2LeftRouter(child: SecondPage());
default:
return MaterialPageRoute(
builder: (_) => Scaffold(
body: Center(
child: Text('No route defined for ${settings.name}'),
),
));
}
}
}
最後在頁面中使用
class FirstPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(appBar: AppBar(title: Text('First page'),),
body: Center(child: RaisedButton(
child: Text('Go to 2nd page'),
onPressed: () {
print('This is first page');
// 執行想要的操作..........
Navigator.of(context).pushReplacementNamed(XRouter.secondpage);
}),),);
}
}
後續。。。
相關文章
- Flutter:如何跳轉頁面?Flutter
- Flutter頁面保活及保持頁面跳轉位置Flutter
- 給你的Flutter頁面跳轉加上動畫Flutter動畫
- vue頁面跳轉Vue
- js頁面跳轉的問題(跳轉到父頁面、最外層頁面、本頁面)JS
- react跳轉url,跳轉外鏈,新頁面開啟頁面React
- Flutter 使用Navigator進行區域性跳轉頁面Flutter
- Flutter頁面跳轉到IOS原生介面 如何實現?FlutteriOS
- JavaScript 頁面跳轉效果JavaScript
- router跳轉page頁面
- Flutter 實現底部擴散模糊動畫(一)跳轉頁面Flutter動畫
- Flutter 基礎(十二)路由(頁面跳轉)與資料傳遞Flutter路由
- Flutter基礎(十二)路由(頁面跳轉)與資料傳遞Flutter路由
- JavaScript頁面跳轉程式碼JavaScript
- 404頁面自動跳轉到首頁
- 頁面跳轉的幾種方法
- PHP中實現頁面跳轉PHP
- php怎麼直接跳轉頁面PHP
- nginx 設定 404 500 頁面跳轉到指定頁面Nginx
- 重定向到登入頁面後跳轉原頁面
- Android Jetpack - 使用 Navigation 管理頁面跳轉AndroidJetpackNavigation
- 日常問題 頁面跳轉 $_SESSION 失效Session
- php 跳轉頁面之前彈窗提示PHP
- dynamics crm跳轉到手機版本的頁面
- Vue 小案例 導航路由跳轉頁面Vue路由
- 2024-05-03 uni跳轉頁面a成功後會立即再跳轉到頁面b,導致無法展現頁面a ==》頁面a業務邏輯沒捋清楚
- 小程式tabBar跳轉頁面並隱藏tabBartabBar
- Android 外部喚起應用跳轉指定頁面Android
- log1按鈕介質頁面跳轉
- RN與原生互動(一)——基本頁面跳轉
- Android頁面跳轉與返回機制詳解Android
- 瀏覽器跳轉新頁面 window.ope瀏覽器
- vue-cli 跳轉到頁面指定位置Vue
- uni-APP 新增頁面實現路由跳轉APP路由
- 微信小程式攜帶引數跳轉頁面/獲取頁面棧微信小程式
- asyUI分頁中,如何實現頁面跳轉,再返回時,...UI
- flutter混合(iOS)開發第一步使用(Flutter_Boost)完成頁面之間的跳轉傳值FlutteriOS
- 直播app原始碼,跳轉站外連結或平臺內部跳轉頁面APP原始碼