Flutter 頁面跳轉(zhuǎn)

  • 基本用法 跳轉(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);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容