- 基本用法 跳轉(zhuǎn)到內(nèi)容頁并傳遞數(shù)據(jù) 不能側(cè)滑 MaterialPageRoute
import 'package:flutter_pro/index/custom_button.dart';
class EditUser extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new RaisedButton(onPressed: (){
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new CustomButton('測試跳轉(zhuǎn)'),
),
);
},child: new Text('修改用戶'),);
}
- 返回上一頁面
Navigator.pop(context)
- 命名導航器路由
通常,移動應用管理著大量的路由,并且最容易的是使用名稱來引用它們。路由名稱通常使用路徑結(jié)構(gòu):“/a/b/c”,主頁默認為 “/”。 當然 也可以寫標示名字 比如welocme 我們就可以理解為歡迎頁面 不過主要定義的大概是登錄頁面
創(chuàng)建 MaterialApp 時可以指定 routes 參數(shù),該參數(shù)是一個映射路由名稱和構(gòu)造器的 Map。MaterialApp 使用此映射為導航器的 onGenerateRoute 回調(diào)參數(shù)提供路由。
return new MaterialApp(
home: new Scaffold(
body: new Center(
child: _currentPage
),
bottomNavigationBar: bottomNavigationBar,
),
theme: GlobalConfig.themeData,
routes: {
"nameRoute":(BuildContext context)=>new EditUser(),
"welcome":(BuildContext context)=>new HomePage(),
'/new':(BuildContext context)=>new HomePage(),
},
);
使用的時候
Navigator.of(context).pushNamed('/new');
Navigator.of(context).pushNamed('welcome');
ios 側(cè)滑退出 CupertinoPageRoute
定義一個NavigatorUtils 類
class NavigatorUtils {
///搜索
static Future goSearchPage(BuildContext context) {
return NavigatorRouter(context, new SearchPage());
}
///公共打開方式
static NavigatorRouter(BuildContext context, Widget widget) {
return Navigator.push(context,
new CupertinoPageRoute(builder: (context) => pageContainer(widget)));
}
///Page頁面的容器,做一次通用自定義
static Widget pageContainer(widget) {
return MediaQuery(
///不受系統(tǒng)字體縮放影響
data: MediaQueryData.fromWindow(WidgetsBinding.instance.window)
.copyWith(textScaleFactor: 1),
child: widget);
}
}
外部調(diào)用 比如按鈕點擊事件 直接調(diào)用此方法 就可以
NavigatorUtils.goSearchPage(context);