flutter setInitialRoute: 不生效
概述
需要实现native跳转到flutter 指定的路由页面。
iOS 工程中发现 FlutterViewController setInitialRouter 无效,在我的需求里面是: 在iOS现有工程集成flutter项目,然后可以跳转到任意的 业务页面。
在iOS 之中实例化页面有两种方式,如下:
1. 通过全局统一的方式进行实例子化:(无效)
swift 代码:
- @objc func handleButtonAction() {
- let flutterEngine = (UIApplication.shared.delegate as? AppDelegate)?.flutterEngine
- let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)!
- flutterViewController.setInitialRoute("test1")
- self.navigationController?.pushViewController(flutterViewController, animated: true)
- }
这种方式显示效果最好,app 已启动,就会直接加载数据,是我所需要的一种,渲染效果几乎和native 一致,毫无违和感,交互非常流畅。
但是如果我想之前跳转到指定页面如:“test1” 路由页面,却发现不起作用;
2、通过全局统一pushrouter方式:(有效,效果差)
swift pushRouter:
- @objc func handleButtonAction() {
- let flutterEngine = (UIApplication.shared.delegate as? AppDelegate)?.flutterEngine
- let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)!
- flutterViewController.pushRoute("test1")
- self.navigationController?.pushViewController(flutterViewController, animated: true)
- }
上面代码虽然有效,但是效果不是很好,而且有明显的push 状态。所以不是我们想要的
3、通过new FlutterViewController 方式设置(有效)
- @objc func handleButtonAction2(){
- let flutterViewController = FlutterViewController()
- flutterViewController.setInitialRoute("test1")
- self.navigationController?.pushViewController(flutterViewController, animated: true)
- }
有效,但是每次渲染都有一闪的效果,在交互上比native差一点。
4、flutter 路由代码
- class MyApp extends StatelessWidget {
- // This widget is the root of your application.
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- title: 'Flutter rokid',
- debugShowCheckedModeBanner: false,// 显示和隐藏
- theme: ThemeData(
- // This is the theme of your application.
- //
- // Try running your application with "flutter run". You'll see the
- // application has a blue toolbar. Then, without quitting the app, try
- // changing the primarySwatch below to Colors.green and then invoke
- // "hot reload" (press "r" in the console where you ran "flutter run",
- // or press Run > Flutter Hot Reload in a Flutter IDE). Notice that the
- // counter didn't reset back to zero; the application is not restarted.
- primarySwatch: Colors.blue,
- ),
- home: PlaygroundPage(title: '若琪实验室'),
- routes: <String ,WidgetBuilder>{
- "test": (_) => new PlaygroundPage(title: "我是内部路由测试test00",),
- "test1": (_) => new PlaygroundPage(title: "我是内部路由测试test01",)
- },
- );
- }
- }
参考资料:
https://www.gitmemory.com/issue/flutter/flutter/29554/492593645
flutter setInitialRoute: 不生效的更多相关文章
- Flutter 异常处理之图片篇
背景 说到异常处理,你可能直接会认为不就是 try-catch 的事情,至于写一篇文章单独来说明吗? 如果你是这么想的,那么本篇说不定会给你惊喜哦~ 而且本篇聚焦在图片的异常处理. 场景 学以致用,有 ...
- 浅谈Flutter(一):搭建Flutter开发环境
学习内容来自: Flutter中文网 . Flutter实战 -------------------------------------------------------------------- ...
- 安装与配置Flutter开发环境
这篇博客我们介绍了Flutter,并且对比了H5,React Native,Flutter. 由于Flutter是跨平台的开发框架,开发一次可以同时运行在Android和iOS上面,所以我们开发时最好 ...
- Flutter 布局(三)- FittedBox、AspectRatio、ConstrainedBox详解
本文主要介绍Flutter布局中的FittedBox.AspectRatio.ConstrainedBox,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. FittedBox Scale ...
- Flutter 布局详解
本文主要介绍了Flutter布局相关的内容,对相关知识点进行了梳理,并从实际例子触发,进一步讲解该如何去进行布局. 1. 简介 在介绍Flutter布局之前,我们得先了解Flutter中的一些布局相关 ...
- Flutter(一)安装配置和几个注意点
Flutter(一)安装配置和几个注意点 记住要仰望星空,不要低头看脚下.无论生活如何艰难,请保持一颗好奇心.你总会找到自己的路和属于你的成功. 愿您的来世灵魂依旧,躯体康健. 一句话来形容Flutt ...
- Flutter 知识点
Flutter:一个移动应用开发框架,它使用 Dart.C++.Skia 开发,对外提供了完全不依赖系统平台的 Widget 的能力,只通过自绘图形的方式工作,具有极其优秀的跨平台性.目前已经支持了 ...
- Flutter 安装
都说程序猿学习是不分平台的,做了一辈子的Xaml,也想看看现在最牛逼的移动技术. 看了看Google 的Flutter,好像很牛逼,不怎么需要Android和IOS基础(应该还是要的), 不过现在是B ...
- Flutter开发环境(Window)配置及踩坑记录
Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量原生 UI 的移动 SDK.Flutter 兼容现有的代码,免费且开源,在全球开发者中广泛被使用. F ...
随机推荐
- mac 安装brew mac安装expect mac一键登录服务器脚本
mac 安装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ma ...
- HTTPS 加密机制
目录 1. HTTPS 概述 2. 对称加密 3. 非对称加密 4. 非对称加密改良方案 5. 非对称加密 + 对称加密 6. 中间人攻击 7. 数字证书 8. 数字签名 9. HTTPS 工作原理 ...
- LeetCode K个一组翻转链表
题目链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ 题目大意 略. 分析 逆转每一段,然后和上一段与下一段衔接即可,加头结点 ...
- MySQL慢查询日志分割
mysql> set global slow_query_log=0; Query OK, 0 rows affected (0.00 sec) mysql> set global s ...
- 面试总结【css篇】- css选择器以及优先级
优先(优先级为): !important > 内联样式 > #id > .class > tag > * > 继承 > 默认 . 当选择器的权重相同时,它将 ...
- [已解决]Series object has no attribute explode
报错代码 s = pd.Series([[1, 2, 3], 'foo', [], [3, 4]]) s 0 [1, 2, 3] 1 foo 2 [] 3 [3, 4] dtype: object s ...
- 2019ICPC南京网络赛F Greedy Sequence
题意:对于1<=i<=n每次找到(pos[i]-k,pos[i]+k)内不大于i的最大那个数,ans[i]=ans[mx]+1,若ans[mx]未知则递归处理ans[mx] PS:这个题比 ...
- 如果在vue中实现一个输入框的抖动效果?
1. 先来理下思路? 1)抖动就是摆动,现实中的钟摆可以很形象. 2)当摆动到临界点后,就会向相反的方向摆动. 3)在没有动力时,摆动会慢慢停止. 2.用法: :start.sync 里面是抖动器名字 ...
- cocos2dx 3.9 微信授权登陆后游戏进程结束解决办法
找到 Cocos2dxActivity.java 文件夹 里面的 onDestroy() 方法 if (mGLSurfaceView != null) { Cocos2dxHel ...
- 笔记45 Hibernate快速入门(二)
Hibernate O/R 映射 一.多对一 一个Product对应一个Category,一个Category对应多个Product,所以Product和Category是多对一的关系.使用hiber ...