美文网首页Flutter打卡学习
3.Flutter打卡-基础知识(2)

3.Flutter打卡-基础知识(2)

作者: leaflying | 来源:发表于2019-06-03 17:08 被阅读0次

    路由管理

    在web开发中,我们经常会碰到路由这个概念,简单来说,路由就是URL到函数的映射。对于服务器来说,当接收到客户端发来的HTTP请求,会根据请求的URL,来找到相应的路由映射关系,然后执行相应的方法,并将返回值发送给客户端。

    那么在Flutter中,路由我们也可以这么理解,就是通过一定的映射关系,来去跳转到指定的页面。在flutter中文网的解释是Route在Android中通常指一个Activity,在iOS中指一个ViewController。所谓路由管理,就是管理页面之间如何跳转,通常也可被称为导航管理。

    实例

    (1)新建两个页面

    import 'package:flutter/material.dart';
    import 'newroute.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          title: 'Flutter Demo',
          theme: new ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: new MyHomePage(),
        );
      }
    }
    
    
    class MyHomePage extends StatelessWidget {
      @override
      Widgetbuild(BuildContext context) {
        return MaterialApp(
            title:'Flutter Demo',
            theme:ThemeData(
              primarySwatch: Colors.blue,
            ),
            home:Scaffold(
              appBar:AppBar(
                title:Text("Welcome to Flutter"),
              ),
              body:Center(
                child:FlatButton(
                  child: Text("open new route"),
                  textColor: Colors.blue,
                  onPressed: () {
                    //导航到新路由   
                    Navigator.push( context,
                        new MaterialPageRoute(builder: (context) {
                          return new NewRoute();
                        }));
                  },
                ),
              ),
            )
        );
      }
    }
    
    import 'package:flutter/material.dart';
    
    class NewRoute extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("New route"),
          ),
          body: Center(
            child: Text("This is new route"),
          ),
        );
      }
    }
    

    MaterialPageRoute继承自PageRoute类,PageRoute类是一个抽象类,表示占有整个屏幕空间的一个模态路由页面,它还定义了路由构建及切换时过渡动画的相关接口及属性。MaterialPageRoute 是Material组件库的一个Widget,它可以针对不同平台,实现与平台页面切换动画风格一致的路由切换动画:

    • 对于Android,当打开新页面时,新的页面会从屏幕底部滑动到屏幕顶部;当关闭页面时,当前页面会从屏幕顶部滑动到屏幕底部后消失,同时上一个页面会显示到屏幕上。
    • 对于iOS,当打开页面时,新的页面会从屏幕右侧边缘一致滑动到屏幕左边,直到新页面全部显示到屏幕上,而上一个页面则会从当前屏幕滑动到屏幕左侧而消失;当关闭页面时,正好相反,当前页面会从屏幕右侧滑出,同时上一个页面会从屏幕左侧滑入。
    注册路由表

    我们需要先注册路由表后,我们的Flutter应用才能正确处理命名路由的跳转。注册方式很简单,我们回到之前“计数器”的示例,然后在MyApp类的build方法中找到MaterialApp,添加routes属性,代码如下:

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          title: 'Flutter Demo',
          theme: new ThemeData(
            primarySwatch: Colors.blue,
          ),
          routes:{
              "new_page":(context)=>NewRoute(),
          } ,
          home: new MyHomePage(),
        );
      }
    }
    

    然后,我们就可以通过路由名打开新路由页。

    Navigator.pushNamed(context, "new_page");
    

    参考文章:https://book.flutterchina.club/chapter2/flutter_router.html

    相关文章

      网友评论

        本文标题:3.Flutter打卡-基础知识(2)

        本文链接:https://www.haomeiwen.com/subject/tnzcxctx.html