androidflutter

Flutter 页面跳转

2019-06-17  本文已影响17人  sirai
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('测试跳转'),
        ),
      );
    },child: new Text('修改用户'),);
  }
Navigator.pop(context)

创建 MaterialApp 时可以指定 routes 参数,该参数是一个映射路由名称和构造器的 Map。MaterialApp 使用此映射为导航器的 onGenerateRoute 回调参数提供路由。

 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 侧滑退出 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(

        ///不受系统字体缩放影响
        data: MediaQueryData.fromWindow(WidgetsBinding.instance.window)
            .copyWith(textScaleFactor: 1),
        child: widget);
  }
}

外部调用 比如按钮点击事件 直接调用此方法 就可以

  NavigatorUtils.goSearchPage(context);
上一篇 下一篇

猜你喜欢

热点阅读