Flutter 中extends、implements、with

Flutter 中extends、implements、with,第1张

a、Flutter中继承是单继承

b、构造函数或者析构函数不能继承

c、子类重写父类方法要在方法前加@override

d、子类调用父类的方法用super

Flutter 中子类可以访问父类的所有变量和方法,因为Flutter没有public 和 private 之分

a、混合对象是一个类

b、一个类可以混合多个类

a、class 就是一个接口

b、class 被当做接口使用时,class的方法就是接口方法。需要重新实现接口方法,方法前使用@override关键字

c、class 被当做接口使用时,class的成员变量也需要在子类重新实现,使用@override关键字

d、被实现的接口可以有多个

如果我们目前的项目是Android的,但是接下来我们希望部分页面可以使用Flutter进行开发,甚至我们希望在Native页面中嵌入FlutterUI组件,那么我们该如何实现呢?

假设你现在Android项目的目录的结构是这样的

这时候如果你想创建一个Flutter模块,使得Android模块和Flutter模块之间可以进行交互,我们可以通过Android Studio新建一个Flutter Module,具体过程是:File —> New —> New Module ,之后选择Flutter Module,指定Project Location的路径为

也就是说,最终你的项目结构会是这样的

接下来在Android Module的 buildgradle 文件中添加flutter依赖

先创建一个Flutter页面

这里比较重要的是 windowdefaultRouteName 这个字段,这个字段可以接收从Native传递过来的参数 (下文我们会介绍原生传递参数的方法),也就是说通过这个字段我们就可以进行Flutter页面的路由的分发

我们可以直接在Android的 MainActivity 中启动一个 FlutterActivity ,这里的 initialRoute 方法中传递的参数就对应Flutter层的 windowdefaultRouteName

注意:需要在 AndroidManifestxml 注册 FlutterActivity

自己创建一个 FlutterAppActivity 继承自 FlutterActivity

在 MainActivity 中启动 FlutterAppActivity (另外别忘了在 AndroidManifestxml 中注册 FlutterAppActivity )

两种启动方式的区别

如果单纯只是想打开一个Flutter页面,两种方式实际上基本没有太大区别,第一种方式也许还会更简单一点。但是,在Flutter开发中,我们往往还需要开发一些Native插件供Flutter调用,如果使用复写 FlutterActivity 的方式更有利于我们在 FlutterActivity 中注册我们的Native插件,所以实际开发中一般推荐使用第二种方式

扩展思考

initialRoute 从名称上看起来是Flutter提供给我们进行Native与Flutter交互的路由跳转的,但是实际上他就是一个字符串,我们不仅仅可以传递一个路由名称,有时候我们也可以通过这个参数传递一串JSON数据,然后在Flutter端进行解析,这样我们就可以通过这个参数做更多的事情

activity_mainxml

FrameLayout 用于承载Flutter组件

MainActivityjava

使用 FragmentManager 将 FlutterFragment 添加到 FrameLayout 容器中

运行结果

上半部分是原生的TextView,下半部分是Flutter的Text组件

本节主要介绍了Native和Flutter之间的页面跳转,以及同一个页面中Native与Flutter组件的组合。接下来会介绍如何编写Android插件与Flutter进行数据交互

Scaffold 是一个页面布局脚手架,实现了基本的Material布局,总所周知,大部分页面都包含了标题栏,主体内容,底部导航栏,或者侧滑栏,如果每次都需要重复写这些内容会大大影响开发效率,所以Flutter提供了Material风格的页面脚手架Scaffold,可以很方便的快速搭建基本元素,

Scaffold 继承自 StatefulWidget,是有状态的

常用属性:

appBar: 显示在界面上的标题栏

body: 页面上主题内容

floatingActionButton:浮动按钮,一般界面不一定会用到

floatingActionButtonLocation:浮动按钮的位置

floatingActionButtonAnimator:浮动按钮动画

persistentFooterButtons:固定显示在下方的按钮

drawer | endDrawer:抽屉

bottomNavigationBar:底部标题栏

bottomSheet:底部菜单

以上就是关于Flutter 中extends、implements、with全部的内容,包括:Flutter 中extends、implements、with、Flutter(六)Android与Flutter混合开发(Hybird)、Flutter 基础组件之 Scaffold等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9673611.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存