当前位置: 首页 > 网络应用技术

Flutter Hybrid开发:开发一个简单的快速启动框架

时间:2023-03-08 19:33:15 网络应用技术

  由于颤音页面将在移动终端上启动,因此将有一个简短的空白。尽管该官员提供了引擎温暖的机制,但您需要提前预热所有页面。这种开发成本很高。在研究了怠速鱼的FlutterBoost插头之后,ISEE如果您可以自己实现一个简单的快速启动框架。

  本文中使用的知识点在“扑朔迷离的混合发展:天然和扑动互动”中详细解释。您可以先阅读本文,然后阅读本文。本文不会重复这些内容,然后直接转到干货。

  创建一个Flutter插件项目,添加git,然后编写三个末端代码:

  首先是颤音侧的代码

  1)RouteManager

  它的作用是管理路由,这是一种使用地图来维护路由映射的单一情况。三个函数的三个更重要:

  在这里,GetRoutefactory和GetPage共享一个路由映射,因此无论是在页面开关还是页面切换上,它都保持均匀。

  2)Baseapp

  这是一个抽象类,真正的扑动应用需要继承它。它主要封装了基本的gagechannel,可以与Android/iOS进行交互,并根据接收到的消息在页面上处理开关以实现快速启动。

  继承它需要实现registerRoutes函数的子类,在何处使用RouteManager的寄存器路由来注册每个页面。

  3)基础e

  这也是一个抽象类。每个颤音页面都需要继承它。它主要处理通过两个启动方法传输的参数。它被统一为args,因此可以直接使用类别的类,而无需考虑如何开始。

  接下来是插件中的Android代码

  1)Bootngine

  这是一种单一情况,初始化和预热flutterengine,同时创建基本的MessageChannel以进行后续交互。您需要在应用程序的启用中调用其INIT函数以初始化。

  2)Flutterbootastivity

  继承幻想性,提供一个构建(上下文:上下文,路由:字符串,参数:地图?)要启动的功能,传递路由名称和参数。在onResume时为基本的MessageChannel,将这两个数据处理以飘动。

  iOS类似于Android

  1)Flutterbootngine

  Flutterbootngine.h

  这也是一种初始化和启动Flutterengine的单一情况,并与扑朔迷离创建了flutterbasicmessagagannel的相互作用。

  初始化iOS项目时,有必要调用其initengine功能。

  2)FlutterBootViewController

  FlutterbootViewController.h

  还添加了一个使用路由名称和参数的构造函数,然后在ViewWillAppear时通知颤动。

  请注意,如果将其更改为稍晚,则将在更新到新页面之前显示上一页,以便将其更改为ViewWillAppear。

  3)FlutterBoot.H

  这是Swift的桥梁文件,可以使用Swift上面定义的类。

  这样,我们的插件已经开发并可以在酒吧上发布。

  创建一个颤音模块,然后在pubspec.yaml中介绍我们的插件:

  然后,我们开发两页用于测试。

  1)firstpage.dart

  仅继承基础培训和基础。单击按钮跳到第2页

  2)第二页

  此页面获取传递并显示的参数键。

  3)主

  入口继承了BaseApp并实施了寄存器路由,并注册了这两页。

  请注意,OnGeneraterOute此处使用rutemanager.instance.getRoutefactory(),因此您可以一次注册而无需自己实施。

  开发模块后,可以在Andorid/iOS上使用。

  它在Android中相对简单。它可以在Android项目中引入。足以在Android Main Mode.gradle的构建。

  请注意,插件的名称由模块中的pubspec.yaml定义。

  然后,您可以在Android中使用它。首先,您必须将其初始化,如下所示:

  然后在适当的情况下启动“颤音”页面,然后按以下方式启动代码:

  无耻的第1页,一个码头2启动。

  可以找到测试,无论打开哪个页面,它都非常快,几乎没有负载时间。这样,可以实现快速启动。

  iOS侧稍微复杂一些。您需要了解iOS如何加入颤动。

  我选择框架的介绍方式,因此在flutter模块项目下,按命令编译和包装框架

  Flutter build build ios-framework-xcframework-no- universal-out-unidence unident-output = https://www.shouxicto.com/article/flutter/

  然后将其介绍给iOS项目。与上一篇文章不同,因为插件已添加到该模块中,因此框架产品为四:

  所有四个都需要引入iOS项目。

  然后,AppDelegate需要继承FlutterAppDelegate(如果您不能继承它,则需要处理每个生命周期。

  然后在AppDelegate中初始化,如下:

  然后在正确的位置启动“扑朔迷离”页面,如下所示:

  两页也分别打开。您可以看到几乎没有加载时间,并且参数也正确传递。

  原始:https://juejin.cn/post/7104089894019923998