flutter导航与路由

作者: 明月半倚深秋_f45e | 来源:发表于2019-11-21 11:44 被阅读0次

导航

导航用flutter的自带组件 \color{#3B80FC}{bottomNavigationBar}

思路和vue导航是一样的
1.声明一个数组,放入几个导航页面
2.声明一个index,显示当前页面,默认0
3.点击时切换 index,来切换新页面

class MainPageState extends State<MainPageWidget> {

  int _selectedIndex = 0;
  var pageList = [
    new HomePage(),
    new FindPage(),
    new MinePage()
  ];

  void _onItemTapped(int index) {
    setState(() {
      _selectedIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('BottomNavigationBar Sample'),
      ),
      body: pageList[_selectedIndex],
      bottomNavigationBar: BottomNavigationBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            title: Text('首页'),
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.business),
            title: Text('发现'),
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.school),
            title: Text('我的'),
          ),
        ],
        currentIndex: _selectedIndex,
        selectedItemColor: Colors.amber[800],
        onTap: _onItemTapped,
      ),
    );
  }
}

路由配置

个人喜欢单独拉出一个文件来配置路由

1.新建一个routers目录,下新建一个router.dart文件
2.用键值对把 路由名->页面匹配起来
3.写一个静态类的push方法,提供页面跳转

class RouterUtil {
  static getWidget(String path){
    var _config = {
      'home':new HomePage(),
      'find':new FindPage(),
      'mine':new MinePage(),
      'scan':new Scan(),
      'recorder':new Recorder()
    };

    return _config['${path}'];
  }
  static push(BuildContext context, String path){
    Navigator.of(context).push(
      new MaterialPageRoute(
        builder: (context) => getWidget(path)
      )
    );
  }

页面跳转

class ListItemState extends State<ListItem>{
  @override
  Widget build(BuildContext context) {
    return new GestureDetector(
      onTap:(){
        RouterUtil.push(context, widget.path);
      }
);

\color{#ff0000}{注意}
导航页面不要用 return new MaterialApp
这样跳转的页面会有 底部导航栏,系统认为是二级目录
要想跳到一个底部没有导航栏的页面建议用 return new Scaffold

class FindPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold (
        body: new FindPageWidget()
    );
  }
}

传参

路由页面

'scan':new ScanPageWidget(params:'${params}'),

push方法

  static push(BuildContext context, String path,String params ){
    Navigator.of(context).push(
      new MaterialPageRoute(
        builder: (context) => getWidget(path,params)
      )
    );
  }

跳转带参数

      onTap:(){
        RouterUtil.push(context, widget.path,'我是传参');
      }

页面显示

class ScanPageState extends State<ScanPageWidget> {
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    startScan();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('BottomNavigationBar Sample'),
      ),
      body:Container(
        margin: const EdgeInsets.all(0),
        alignment:Alignment.topLeft,
        color: Colors.green[100],
        child: new Column(
          children: [
            new Text('扫一扫有惊喜'),
            new Text('参数是:${widget.params}')
          ]
        ) 
      )
    );
  }
}

相关文章

  • 8. 【文档讲解】路由与导航

    3-14 【文档讲解】路由与导航 路由与导航 Flutter中Intent等价于什么?(Android) 在Flu...

  • flutter 导航以及传参方式

    flutter 导航方式有基本路由和命名路由1、基本路由 ============================...

  • Flutter>导航(一)>导航到一个新页面和返回

    关于路由与导航,看了Flutter中文网: https://flutterchina.club/routing-a...

  • Flutter—— 路由(Route)和导航(Navigator

    Flutter的页面,怎么进行跳转的呢?通过路由和导航呢。 一、路由和导航,初认识 言简意赅! 路由(Route)...

  • flutter导航与路由

    导航 导航用flutter的自带组件 思路和vue导航是一样的1.声明一个数组,放入几个导航页面2.声明一个ind...

  • Flutter 路由与导航

    在移动端的开发中经常会有页面间的跳转flutter中可以通过路由来达到相同的效果 我们可以看到在MaterialA...

  • flutter 路由与导航

    参考链接 1. 简单的导航跳转 第一个页面 第二个页面 main 列表跳转的小例子 文章的模型 文章列表 内容界面 实现

  • flutter_boost

    混合开发要点 flutter engine复用 flutter路由和原生导航同步 flutter和原生数据传输->...

  • flutter路由

    在Flutter中,导航器管理应用程序的路由栈。将路由推入(push)到导航器的栈中,将会显示更新为该路由页面。 ...

  • Flutter路由,跳转传值

    路由 Flutter 中的路由就是页面跳转。通过 Navigator 组件管理路由导航。并提供了管理堆栈的方法。 ...

网友评论

    本文标题:flutter导航与路由

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