美文网首页
Flutter路由,跳转传值

Flutter路由,跳转传值

作者: yyggzc521 | 来源:发表于2020-02-09 21:15 被阅读0次

路由

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

如:Navigator.push 和 Navigator.pop
  • 普通push路由例子
import 'package:flutter/material.dart';

import '../Search.dart';

class HomePage extends StatefulWidget {
  HomePage({Key key}) : super(key: key);

  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        RaisedButton(
            child: Text("跳转到搜索页面"),
            onPressed: () {
              //路由跳转
              Navigator.of(context)
                  .push(MaterialPageRoute(builder: (context) => SearchPage()));
            },
            color: Theme.of(context).accentColor,
            textTheme: ButtonTextTheme.primary),
        SizedBox(height: 20),
      ],
    );
  }
}

import 'package:flutter/material.dart';

class SearchPage extends StatelessWidget {
  const SearchPage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("搜索页面"),
      ),
      body: Text("搜索页面内容区域"),
    );
  }
}
  • pop例子
import 'package:flutter/material.dart';

class FormPage extends StatelessWidget {
  String title;
  FormPage({this.title = "表单"});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      //浮动按钮
      floatingActionButton: FloatingActionButton(
        child: Text('返回'),
        onPressed: () {
          //返回上一页
          Navigator.of(context).pop();
        },
      ),
      appBar: AppBar(
        title: Text(this.title),
      ),
      body: ListView(
        children: <Widget>[
          ListTile(
            title: Text('我是表单页面'),
          ),
          ListTile(
            title: Text('我是表单页面'),
          ),
          ListTile(
            title: Text('我是表单页面'),
          ),
          ListTile(
            title: Text('我是表单页面'),
          )
        ],
      ),
    );
  }
}

命名路由

需要定义在根组件中 MaterialApp

import 'package:flutter/material.dart';

import 'routes/Routes.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        // home:Tabs(),
        initialRoute: '/', //初始化的时候加载的路由
        onGenerateRoute: onGenerateRoute);
  }
}

import 'package:flutter/material.dart';

import '../pages/Tabs.dart';
import '../pages/Form.dart';
import '../pages/Search.dart';
import '../pages/Product.dart';
import '../pages/ProductInfo.dart';

//配置路由
final routes = {
   //不需要传参
  '/': (context) => Tabs(),
  '/form': (context) => FormPage(),
  '/product': (context) => ProductPage(),

  //接受传参
  '/productinfo': (context, {arguments}) =>
      ProductInfoPage(arguments: arguments),
  '/search': (context, {arguments}) => SearchPage(arguments: arguments),
};

//固定写法
var onGenerateRoute = (RouteSettings settings) {
  // 统一处理
  final String name = settings.name;
  final Function pageContentBuilder = routes[name];
  if (pageContentBuilder != null) {
    if (settings.arguments != null) {
      final Route route = MaterialPageRoute(
          builder: (context) =>
              pageContentBuilder(context, arguments: settings.arguments));
      return route;
    } else {
      final Route route =
          MaterialPageRoute(builder: (context) => pageContentBuilder(context));
      return route;
    }
  }
};
  • 不需要传参的命名路由
Navigator.pushNamed(context, '/form'); 
  • 需要传参的命名路由跳转
Navigator.pushNamed(context, '/search',arguments: {
                "id":123
              });

相关文章

  • 路由跳转(非命名路由)

    单纯跳转: 路由传值跳转: 路由传值返回跳转:

  • ionic4-传递参数

    环境 路由传值 方式一(单个值) 路由定义 跳转 或者 接收 方式二(多个值) 跳转 接收 组件间传值 父 -> ...

  • Flutter路由,跳转传值

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

  • 2018-11-29 路由

    Flutter有两种跳转方式:静态路由,在创建时就已经明确知道了要跳转的页面和值动态路由,跳转传入的目标地址和要传...

  • Flutter - 页面跳转(路由)、传值

    Flutter 中页面跳转通过 Navigator 和 Route 来实现。 一、页面跳转 1,常规路由页面跳转...

  • 2018-09-28

    1.vue 路由跳转传值 -------- 最好用vuex,bus不适合在路由跳转中传值,因为需要初始化组件 2....

  • 【Flutter 极速指南】路由篇

    Flutter 页面之间的跳转和传值,和大多数前端框架(Vue、React 等)一样,也是采用导航和路由来完成的。...

  • iOS项目与flutter项目,互相跳转传值

    iOS已有项目集成flutter,网上大把资料,这里主要记录互相跳转传值 OC跳转到flutter界面,如跳转到H...

  • Flutter 路由

    flutter 路由 页面跳转 在flutter中界面就是组件Flutter 中的路由通俗的讲就是页面跳转。在 F...

  • Flutter之路由详解

    本文主要包含两个方面:【路由导航】和【路由传值】 路由传值 Flutter中管理多个页面时有两个核心概念和类:Ro...

网友评论

      本文标题:Flutter路由,跳转传值

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