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 ...
随机推荐
- 1. Python版本的选择与安装
Python综述 Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,它具有卓越的通 ...
- Java8 时间调节器
TemporalAdjuster 是做日期数学计算.例如,要获得“本月第二个星期六”或“下周二”. 让我们来看看他们的操作. 选择使用任何编辑器创建以下java程序在 C:/> JAVA Jav ...
- Ibatis sql语句1
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-/ ...
- linux 编译指定库、头文件的路径问题(转)
1. 为什么会出现undefined reference to 'xxxxx'错误? 首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序源码本身没有问题,是你用编译器编译时参数用得 ...
- Linux 下通过mail命令发送邮件
mail -s "测试" 1968089885@foxmail.com 需要先配置smtp服务器
- 反射与类加载之ClassLoader与类加载器(二)
更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680本篇文章将从以下几个内容来阐述反射与类加载: [动态代理模式] [Android ...
- 2019牛客国庆集训派对day7 A 2016
链接:https://ac.nowcoder.com/acm/problem/52800来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...
- hdu6393 /// 树链剖分
题目大意: 给定n q 在n个点n条边的图中 进行q次操作 0 k x 为修改第k条边的值为x 1 x y 为查询x到y的最短路 https://blog.csdn.net/nka_kun/artic ...
- python生成阿里云云直播推流播流地址
申请一个阿里云账号,进入控制台,添加云直播工能,就可以获得相关数据, 直接上代码,阿里云接口文档https://cloud.tencent.com/document/product/267/7977 ...
- SharpDx
layout category title permalink posts_by_category SharpDX SharpDX 系列 /post/sharpdx