dart

Flutter provider状态管理框架

倖福魔咒の 提交于 2020-10-04 03:17:23
官方解释: 依赖项注入(DI)和状态管理之间的混合,使用用于小部件的小部件构建。 它故意将小部件用于DI /状态管理,而不是仅使用dart类Stream。原因是,小部件非常简单,但功能强大且可扩展。 通过使用小部件进行状态管理,provider可以保证: 通过强制的单向数据流实现可维护性 可测试性/可组合性,因为始终可以模拟/覆盖值 健壮性,因为很难忘记处理模型/小部件的更新方案 目录 步骤一 步骤二 步骤三 步骤一 创建一个类,with一个ChangeNotifier,如: //创建一个代理 它完成两个动作:1改变数据; 2刷新数据。 class MyChangeNotifier with ChangeNotifier { int _count = 15; int get count => _count; // 数据加操作 void add() { if(_count < 100){ _count++; notifyListeners(); } } // 数据减操作 void sub() { if(_count > 5){ _count--; notifyListeners(); } } } MyChangeNotifier类可看作是一个代理,改变数据与刷新页面都由此类完成。 步骤二 在runApp函数的根节点添加Provider(状态管理员)

第 3-4 课:Dart Pub 使用及 Flutter 插件库的开发

谁都会走 提交于 2020-10-03 13:14:09
在使用 Flutter 开发时,可能某些功能的实现比较麻烦或者无法实现,这时我们首先应该想到的就是要搜索 Dart Pub: https://pub.dev/flutter 。 这是 Flutter 官方的一个针对 Flutter、Web、Dart 的插件库开源仓库,里面有很多官方和其他开发者开源的插件库。那么这节课我们将介绍 Flutter 中 Dart Pub 的使用,以及我们自己实现开发一款 Flutter 插件库的方法 本文将主要介绍: Dart Pub 使用 Flutter 插件库 Flutter Package 的开发 Flutter 插件库 Flutter Plugin 的开发 1 Dart Pub 使用 Dart Pub 里的 Flutter 插件库都是兼容 Android 和 iOS 的,当然 Dart Pub 里的插件库还有很多是 Web 相关的插件,我们只需要搜索 Flutter 的插件库使用即可。 我们看下 Flutter 相关的使用频率比较高的插件库: 我们这里以 path provider 这个插件库为例,点击 path provider 这个链接进入插件库详情描述页。path_provider 是用于为 Flutter 提供访问 Android 和 iOS 的文件系统目录的功能的一个插件库。 点击进入的页面如下: 来源: oschina 链接:

在原生项目中集成Flutter

二次信任 提交于 2020-10-02 14:18:29
概述 使用Flutter从零开始开发App是一件轻松惬意的事情,但对于一些成熟的产品来说,完全摒弃原有App的历史沉淀,全面转向Flutter是不现实的。因此使用Flutter去统一Android、iOS技术栈,把它作为已有原生App的扩展能力,通过有序推进来提升移动终端的开发效率。 目前,想要在已有的原生App里嵌入一些Flutter页面主要有两种方案。一种是将原生工程作为Flutter工程的子工程,由Flutter进行统一管理,这种模式称为统一管理模式。另一种是将Flutter工程作为原生工程的子模块,维持原有的原生工程管理方式不变,这种模式被称为三端分离模式,如下图所示。 三端代码分离模式的原理是把Flutter模块作为原生工程的子模块,从而快速地接入Flutter模块,降低原生工程的改造成本。在Flutter 1.1x时代,在原生已有app中接入Flutter的步骤比较繁琐,具体可以可以参考: Flutter与原生混合开发 不过,从Flutter 1.20.x版本开始,Flutter对原生app接入Flutter进行了优化和升级,下面是具体介绍。 原生Android集成Flutter 支持的特性 在 Gradle 脚本中添加一个自动构建并引入 Flutter 模块的 Flutter SDK 钩子。 将 Flutter 模块构建为通用的 Android Archive

用Flutter做桌上弹球?聊聊绘图(Canvas&CustomPaint)API

此生再无相见时 提交于 2020-10-02 10:01:52
本文是Flutter中Canvas和CustomPaint API的使用实例。 首先看一下我们要实现的效果: 结合动图演示,列出最终 目标如下: 在程序运行后,显示一个小球; 每次程序启动后,小球的样式均发生随机性变化,体现在大小、颜色和位置三点; 小球运行的规律参考桌球或三维弹球游戏; 单击屏幕,小球变色; 双击屏幕,小球暂停/恢复运动; 长按屏幕,小球开始/停止自动变色。 运用的主要技术点: Canvas和CustomPaint API。 运行平台: Android、iOS 源码地址: Github Gitee 功能拆解 首先拆解前文中所列出的6个实现目标,显而易见,要实现它们,我们需要: 随机颜色生成器; 随机位置生成器; 随机尺寸生成器; 小球绘制逻辑; 小球运动逻辑: 边界判定; 初始运动方向生成器; 定向移动位置更新器。 用户手势监听器。 功能实现 接下来,我们逐步实现功能拆解中所列举的6个具体功能。 随机颜色生成器 随机颜色生成器在程序启动、单击屏幕和自动变色中使用。 在Flutter中,我们可以通过Color类对红、绿、蓝和透明度分别定义,来定义某个唯一的颜色,数值范围是0-255。对于透明度,0表示完全透明,255表示完全不透明。 对于随机数值,我们使用Random类生成0-255之间的随机整数。 随机颜色生成器则主要使用上述两个类来实现,具体代码片段如下: