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
- javascript 跳轉頁面JavaScript
- js頁面跳轉JS
- js頁面跳轉的問題(跳轉到父頁面、最外層頁面、本頁面)JS
- Flutter頁面跳轉到IOS原生介面 如何實現?FlutteriOS
- react跳轉url,跳轉外鏈,新頁面開啟頁面React
- js跳轉頁面方法(轉)JS
- Flutter 使用Navigator進行區域性跳轉頁面Flutter
- Flutter 實現底部擴散模糊動畫(一)跳轉頁面Flutter動畫
- JavaScript 頁面跳轉效果JavaScript
- router跳轉page頁面
- Flutter 基礎(十二)路由(頁面跳轉)與資料傳遞Flutter路由
- Flutter基礎(十二)路由(頁面跳轉)與資料傳遞Flutter路由
- JavaScript頁面跳轉程式碼JavaScript
- ios跳轉到通用頁面iOS
- PHP頁面跳轉如何實現延時跳轉PHP
- nginx 設定 404 500 頁面跳轉到指定頁面Nginx
- php怎麼直接跳轉頁面PHP
- PHP中實現頁面跳轉PHP
- APP直接跳轉設定頁面APP
- javascript控制頁面(含iframe進行頁面跳轉)跳轉、重新整理的方法彙總JavaScript
- 日常問題 頁面跳轉 $_SESSION 失效Session
- 微信小程式頁面跳轉傳參微信小程式
- javascript頁面重新整理和跳轉JavaScript
- [分享]iOS開發-頁面間跳轉iOS
- “asp.net頁面跳轉”補遺ASP.NET
- php 跳轉頁面之前彈窗提示PHP
- Vue 小案例 導航路由跳轉頁面Vue路由
- dynamics crm跳轉到手機版本的頁面
- PHP頁面跳轉幾種實現方法PHP
- iOS——使用StroryBoard頁面跳轉及傳值iOS
- 頁面間跳轉的效能優化(一)優化
- 微信小程式攜帶引數跳轉頁面/獲取頁面棧微信小程式
- 2024-05-03 uni跳轉頁面a成功後會立即再跳轉到頁面b,導致無法展現頁面a ==》頁面a業務邏輯沒捋清楚
- Android 頁面跳轉傳遞引數及頁面返回接收引數Android