美文网首页
401--Flutter for iOS 2--导航

401--Flutter for iOS 2--导航

作者: 修_远 | 来源:发表于2021-07-15 22:32 被阅读0次

[TOC]

导航

1. 我怎么在不同页面之间跳转?

在 iOS 中,你可以使用管理了 view controller 栈的 UINavigationController 来在不同的 viewcontroller 之间跳转。

Flutter 也有类似的实现,使用了 NavigatorRoutes。一个路由是 App 中“屏幕”或“页面”的抽象,而一个 Navigator 是管理多个路由的 widget 。你可以粗略地把一个路由对应到一个 UIViewControllerNavigator 的工作原理和 iOS 中 UINavigationController 非常相似,当你想跳转到新页面或者从新页面返回时,它可以 push()pop() 路由。

在页面之间跳转,你有几个选择:

  • 具体指定一个由路由名构成的 Map。(MaterialApp)
  • 直接跳转到一个路由。(WidgetApp)

下面是构建一个 Map 的例子:

void main() {
  runApp(MaterialApp(
    home: MyAppHome(), // becomes the route named '/'
    routes: <String, WidgetBuilder> {
      '/a': (BuildContext context) => MyPage(title: 'page A'),
      '/b': (BuildContext context) => MyPage(title: 'page B'),
      '/c': (BuildContext context) => MyPage(title: 'page C'),
    },
  ));
}

通过把路由的名字 push 给一个 Navigator 来跳转:

Navigator.of(context).pushNamed('/b');

Navigator 类不仅用来处理 Flutter 中的路由,还被用来获取你刚 push 到栈中的路由返回的结果。通过 await等待路由返回的结果来达到这点。

举个例子,要跳转到“位置”路由来让用户选择一个地点,你可能要这么做:

Map coordinates = await Navigator.of(context).pushNamed('/location');

之后,在 location 路由中,一旦用户选择了地点,携带结果一起 pop() 出栈:

Navigator.of(context).pop({"lat":43.821757,"long":-79.226392});

2. 我怎么跳转到其他 App?

在 iOS 中,要跳转到其他 App,你需要一个特定的 URL Scheme。对系统级别的 App 来说,这个 scheme 取决于 App。为了在 Flutter 中实现这个功能,你可以创建一个原生平台的整合层,或者使用现有的 plugin,例如 url_launcher

相关文章

网友评论

      本文标题:401--Flutter for iOS 2--导航

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