重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果我们目前的项目是Android的,但是接下来我们希望部分页面可以使用Flutter进行开发,甚至我们希望在Native页面中嵌入FlutterUI组件,那么我们该如何实现呢?
创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业成都多线服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
假设你现在Android项目的目录的结构是这样的
这时候如果你想创建一个Flutter模块,使得Android模块和Flutter模块之间可以进行交互,我们可以通过Android Studio新建一个Flutter Module,具体过程是:File — New — New Module ,之后选择Flutter Module,指定Project Location的路径为
也就是说,最终你的项目结构会是这样的
接下来在Android Module的 build.gradle 文件中添加flutter依赖
先创建一个Flutter页面
这里比较重要的是 window.defaultRouteName 这个字段,这个字段可以接收从Native传递过来的参数 (下文我们会介绍原生传递参数的方法),也就是说通过这个字段我们就可以进行Flutter页面的路由的分发
我们可以直接在Android的 MainActivity 中启动一个 FlutterActivity ,这里的 initialRoute 方法中传递的参数就对应Flutter层的 window.defaultRouteName
注意:需要在 AndroidManifest.xml 注册 FlutterActivity
自己创建一个 FlutterAppActivity 继承自 FlutterActivity
在 MainActivity 中启动 FlutterAppActivity (另外别忘了在 AndroidManifest.xml 中注册 FlutterAppActivity )
两种启动方式的区别
如果单纯只是想打开一个Flutter页面,两种方式实际上基本没有太大区别,第一种方式也许还会更简单一点。但是,在Flutter开发中,我们往往还需要开发一些Native插件供Flutter调用,如果使用复写 FlutterActivity 的方式更有利于我们在 FlutterActivity 中注册我们的Native插件,所以实际开发中一般推荐使用第二种方式
扩展思考
initialRoute 从名称上看起来是Flutter提供给我们进行Native与Flutter交互的路由跳转的,但是实际上他就是一个字符串,我们不仅仅可以传递一个路由名称,有时候我们也可以通过这个参数传递一串JSON数据,然后在Flutter端进行解析,这样我们就可以通过这个参数做更多的事情
activity_main.xml
FrameLayout 用于承载Flutter组件
MainActivity.java
使用 FragmentManager 将 FlutterFragment 添加到 FrameLayout 容器中
运行结果
上半部分是原生的TextView,下半部分是Flutter的Text组件
本节主要介绍了Native和Flutter之间的页面跳转,以及同一个页面中Native与Flutter组件的组合。接下来会介绍如何编写Android插件与Flutter进行数据交互
E: B、C、D、G、P、T、V。解析:E发音:[iː]。B、C、D、G、P、T、V发音都含有[iː]。
含有E的单词:set、bet、flutter、each、every。
一、set
1、含义:v. 放置;设定;确定;规定;调整;分配;(太阳)落下去;将(宝石)镶嵌到(某物);配乐;n. 集合;组合;日落;一套;一副;一局比赛;舞台;姿态;头发的定型;adj. 规定的;固定的;不变的;做好准备的;固执的;不自然的。
2、用法
set的基本意思是“放,搁”,指为了明确的目的而将某人或某物放在一个特定的位置或使其处于某种状态。引申可指“使凝固,使变坚固”“确定,制定”“估计,评价”“调整,对准”“使某人〔某物〕开始做某事〔发生作用〕”“树立,创造”“镶嵌,点缀”“谱曲,设置”“排字”等。
How do we set the enrollment criteria?
我们如何设定录取标准?
二、bet
1、含义:v. 打赌;确信无疑;n. 赌注;确信。
2、用法
bet的基本意思是“打赌”,指打赌的行为或动作。
bet的宾语可以是一个(所赌之物或打赌的对象),也可以是两个(一个间接宾语,一个直接宾语),还可以是三个(一个间接宾语,两个直接宾语),在形式上则可以是名词、代词,也可以是从句。
I bet they are making a pile out of the deal.
我肯定他们这笔生意一定赚大钱。
三、flutter
1、含义:n. 摆动;振翼;烦扰;vi. 摆动;振翼;烦扰;vt. 使心烦;使焦虑。
2、用法
直接源自古英语的floterian,意为来回飘动。
作动词表示以类似鸟那样的运动方式来移动。flutter强调不稳定性和颤动性。
The young bird fluttered its wings.
雏鸟拍打着它的翅膀。
四、each
1、含义:pron. 每个;个人;个自;adj. 每;每个;adv. 每个。
2、用法
each用作代词时,在句中可作主语、宾语和同位语。
each用作主语时,常用于each of短语,如果each强调的是“个别”,谓语动词与相关的物主代词通常总用单数形式,但如果each强调的是“集体”或先行词是复数或先行词的主语是由两个或两个以上的单数名词或两个复数名词组成时,谓语动词和相关的物主代词则用复数。
I asked all the children and each told a different story.
我问过所有的孩子,每个人的说法都不一样。
五、every
1、含义:adj. 每个;一切的;所有可能的;每隔;最大的。
2、用法
every的基本意思是指组成整体的每个个体,但不把它看作具体的某一个,而是将其看作是全体成分的典型和代表。
every与抽象名词连用,表示希望、机会、理由等“一切可能的”。
every一般修饰单数名词,作主语时与动词单数形式连用,在口语中可用人称代词和物主代词的复数形式指代。
He received the fixed dole every month.
他每个月都能领到固定的救济金。
由于 Flutter 不支持运行时反射,JSON 解析完全是手动的。
所谓手动解析,是指使用 dart:convert 库中内置的 JSON 解码器,将 JSON 字符串解析成自定义对象的过程。使用这种方式,我们需要先将 JSON 字符串传递给 JSON.decode 方法解析成一个 Map,然后把这个 Map 传给自定义的类,进行相关属性的赋值。
下面动手解析一个用户的信息
首先,我们根据 JSON 结构定义 User类,并创建一个工厂类,来处理 User 类属性成员与 JSON 字典对象的值之间的映射关系:
数据解析类创建好了,剩下的事情就相对简单了,我们只需要把 JSON 文本通过 JSON.decode 方法转换成 Map,然后把它交给 User 的工厂类 fromJson 方法,即可完成 User 对象的解析:
项目中往往会碰到 嵌套对象属性 情况,
面对这种情况,我们需要为每一个非基本类型属性创建一个解析类。
然后,我们只需要在 User 类中,增加 dog 属性及对应的 JSON 映射规则即可:
通过这种方法,无论对象有多复杂的非基本类型属性,我们都可以创建对应的解析类进行处理。
不过到现在为止,我们的 JSON 数据解析还是在主 Isolate 中完成。如果 JSON 的数据格式比较复杂,数据量又大,这种解析方式可能会造成短期 UI 无法响应。下面我们可以用 compute 函数优化一下
通过 compute 的改造,我们就不用担心 JSON 解析时间过长阻塞 UI 响应了。
fabricate vt.制作,组合;捏造
fabrication n.制作,构成;捏造
facilitate vt.使容易;助长
faction n.派别,宗派,小集团
fair a.美丽的
fake n.假货,膺品 a.假的
fall vi.变成,成为;陷于
fantastic a.空想的;奇异的
fascinate vt.迷住 vi.迷人
fastener n.扣件,钮扣,揿钮
faultless a.无过失的;无缺点的
fearless a.无畏的,大胆的
feel vi.摸起来
fell vt.砍倒(树等);砍伐
fellowship n.伙伴关系;联谊会
feminine a.女性的;女子气的
fence n.击剑(术) vi.击剑
ferrous a.铁的;亚铁的
ferry n.渡船;渡口 vt.运送
fertile a.(创造力)丰富的
fighter n.斗争者;战斗机
filament n.细丝;长丝;灯丝
fill vt.担任(职务);填补
filter vi.滤过
filth n.污秽,污物;淫猥
finance vt.提供资金
finely ad.精细地,美好地
finite a.有限的;有尽的
fireplace n.壁炉
firework n.爆竹,花炮,烟火
firmness n.坚固,坚定,稳固
first-rate a.第一流的,优秀的
fission n.裂开;分裂生殖
fitness n.适当,恰当;健康
fitting a.适当的 n.配合
fixture n.固定;定期存款
flake n.片,薄片;肌膈
flame vi.发火焰 vt.点燃
flank n.肋,肋腹;侧面
flannel n.法兰绒;法兰绒衣服
flap vt.n.拍打 vi.拍动
flask n.瓶;火药筒;砂箱
flatten vt.把…弄平;击倒
flatter vt.奉承,阿谀,谄媚
flavour vt.给…调味
flaw n.缺点,瑕疵;裂隙
flee vi.逃走 vt.逃避
flexible a.灵活的,可变通的
flight n.溃退,逃跑;外流
fling vi.vt.(用力)扔,抛
float n.漂浮物;浮标,木筏
flock vi.群集,聚集
fluctuate vi.波动 vt.使波动
fluctuation n.波动;脉动;踌躇
flush n.兴奋,脸红;发烧
flutter vi.(鸟)振翼;飘动
flux n.流;涨潮;流量
fly v.飞跑,逃跑,消失
foam n.泡沫;泡沫塑料
follow vt.从事(职业),经营
follower n.契据的附面;从动件
footpath n.小路,人行道
fore ad.在前面 a.先前的
foreign a.无关的
foresee vt.预见,预知,看穿
forge vt.打(铁等),锻造
formal a.形态的;规范的
formerly ad.以前,从前
formidable a.可怕的;难对付的
formulate vt.用公式表示
formulation n.明确的表达
forsake vt.遗弃,抛弃,摒绝
fort n.要塞,堡垒
forthcoming a.即将到来的;现有的
fortress n.堡垒,要塞
forum n.论坛,讨论会
forward ad.向前,将来vt.转递
fossil n.化石 a.化石的
foster vt.养育,抚养;培养
foul a.肮脏的;丑恶的
fowl n.家禽;禽肉
fraction n.分数;分馏的部分
fracture n.破裂;裂痕 vi.破裂
fragile a.脆的;体质弱的
fragrant a.香的,芬芳的
frail a.脆弱的;意志薄弱的
framework n.机构,组织,体制
freight n.运费;货运;负担
frequency n.频繁,屡次;频率
frequent a.常见的;频繁的
freshen vt.使显得新鲜
fret vt.vi.(使)烦恼
friction n.擦热皮肤
fright n.惊吓,恐怖
frightful a.可怕的;讨厌的
fringe n.穗,毛边;边缘
fro ad.往,去,回,向后