-
Base
目录 运行环境 编译过程 Build 和 Archive 从头开发一个app都需要什么 随记运行环境xy:软件的运行、脚本的运行都需要一个运行环境,运行环境提供了软件和脚本运行所需的一切。“运行环境”(Runtime Environment)是指在计算机科学中,程序或应用程序执行时所需的硬件和软件的集合。 这个环境提供了程序运行所需的一切,包括操作系统、依赖库、语言运行时等。关于运行环境的要点包括:操作系统: 程序需要在特定的操作系统上运行。例如,Windows、Linux、ma...…
-
待整理内容
目录 待整理待整理1、channel 的调用与回调2、future 的用法3、go_router的使用…
-
状态管理️
目录 InheritedWidgetInheritedWidget一、介绍7.2 数据共享(InheritedWidget)InheritedWidget提供了一种在 widget 树中 从上到下共享数据的方式。 Flutter SDK中正是通过 InheritedWidget 来共享应用主题(Theme)和 Locale (当前语言环境)信息的。我们创建一个继承自InheritedWidget 的 ShareDataWidgetclass ShareDataWidget exten...…
-
flutter中的路由⭐
目录 一个路由系统应该具有什么样的功能一个路由系统应该具有什么样的功能 功能 说明 举例 页面跳转 跳转到指定页面(页面入栈)带参数跳转新页面位于栈顶 页面返回 栈顶页面出栈能够向上一级页面传递参数 路由拦截 跳转新页面之前进行拦截返回上一级页面之前进行拦截 页面替...…
-
混合应用创建与调试⭐️
目录 iOS 与 Flutter module 混合应用 调试iOS 与 Flutter module 混合应用内容待整理启动与调试一、启动1、iOS 端加载 Flutter module App 启动时或某个特定页面打开时,初始化 Flutter 引擎(FlutterEngine)。 Flutter engine 启动后,就会载入并执行dart代码(调用main函数)。2、iOS 启动 Dart VM Service 服务 F...…
-
flutter与原生应用⭐️
目录 flutter页面的加载 channel的调用流程 Plugin介绍 鸿蒙与flutter的相互调用flutter页面的加载以DF应用为例+ (instancetype)getFlutterViewControllerWithEntryPoint:(NSString *)entryPoint params:(NSDictionary *)params { // 初始化一个新的 FlutterEngine,并为其分配一个唯一的名称。 // 通过这种方式,可以创建多个...…
-
flutter命令介绍
目录 flutter - -version flutter build iosflutter - -version一、介绍 //官方解释: Reports the version of this tool. flutter --version // 下面是输出的版本信息 Flutter 3.7.12 • channel stable • https://github.com/flutter/flutter.gitFramework • revision 4d9e56e694...…
-
flutter环境配置
见这篇文章 Mac中flutter环境配置:https://jianghuhike.github.io/12213.html 行者常至,为者常成!…
-
16 热更新
1、研究基于 Flutter Shorebird 热更新支持中国区域的问题 2、Embed a Flutter module in your iOS app - Use frameworks 3、Code Push for iOS Hybrid Apps 4、快速集成 Flutter Shorebird 热更新目录 shorebird的安装使用 对原有工程的改造 实现热更新shorebird的安装参考官方文档(上面的参考文章3、4),有很详细的注册、登录、初始化、发布、发布...…
-
15 热重载
目录 原理 手动启动tools平台原理Flutter Dart – DartVM(AOT JIT)Dart代码 – Tools热重载平台 – DartVM – flutter引擎Tools平台的路径:flutter - packages - flutter_tools手动启动tools平台热重载的挂载 配置tools的路径和要挂载的工程 如果启动失败配置下dartsdk的路径 配置好以后就可以启动tools平台了,这时我们去修改我们工程内的代码,然后在tools...…
-
14 package开发
参考文章:开发Packages和插件常用命令目录 package的创建 plugin的创建package的创建一、创建于发布flutter create --template=package 'package_name'目录结构如下:所有的有用的资源都要放在lib目录下 上传到pub.dev需要谷歌账号发布环境测试pub publish --dry-run 发布: 发布过程中终端会给出一个授权链接,打开授权链接登录即可完成授权需要梯子 需要指定服务器发布否...…
-
13 flutter channel
目录 channel的创建 channel回调的实现 channel的codecchannel的创建channel的创建需要两个参数 name:channel的唯一标识 binaryMessenger:消息信使,用于消息的接收和发送,可以传入FlutterViewController的实例+ (instancetype)methodChannelWithName:(NSString*)name binaryMessenger:(NSObj...…
-
12 flutter engine
参考:Flutter混合栈管理方案对比目录 介绍 depot_tools 引擎复用介绍一、介绍app.framework 就是dart代码Flutter.framework 就是引擎,很多大公司的二开比如热更新,就是在这个framework的基础上进行的引擎在flutter sdk中的位置 /opt/flutter/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64/Flutter.framewor查看当前的en...…
-
11 混合开发
目录 介绍 GlobalKey介绍一、混合开发Flutter项目调用原生的某些功能原生项目里面包含Flutter模块FlutterViewController 创建再销毁之后会有8M的内存泄露 所以Flutter与原生页面之前不适合来回切换,FlutterViewController应该常驻内存让flutter给原生传递数据,原生应该提供一个方法让flutter来调用,通过方法的参数把数据传过来 原生调用flutter也是同样的道理Flutter调用原生// flutter 侧代码...…
-
10 key
目录 LocalKey GlobalKeyLocalKey一、说明 图中的 widgeta 和 widgetb的代码如下:class StfulItem extends StatefulWidget { // ignore: prefer_const_constructors_in_immutables StfulItem(this.title, {Key? key}) : super(key: key); // 注意 title 是widget的属性 final String...…
-
三棵树和渲染原理⭐️⭐️
目录 三棵树 结合三棵树来说说CPU和GPU是如何工作的 iOS原生渲染和Flutter渲染有什么不同⭐️三棵树在Flutter渲染的流程中,有三棵重要的树,Widget树,Element树,Render树 Flutter引擎针对Render树进行渲染。一、Widget树1、StatelessWidget主要特点 UI不会动态更新 一旦创建,其属性(final修饰)不可更改,完全依赖外部传入的数据。生命周期 StatelessWidget的生命周期非常简单: 创建...…
-
8 生命周期
目录 生命周期 Widget的生命周期生命周期什么是生命周期? 说白了就是回调方法(函数) 让你知道我封装好的这个Widget它处于什么样的状态有什么作用? 监听Widget的事件 初始化数据:创建数据、发送网络请求 内存管理:销毁数据、销毁监听者、销毁Timer等等Widget的生命周期一、StatelessWidget构造方法 build方法二、StatefulWidget包含两个对象:StatefulWidget 和 StateWid...…
-
Future的用法⭐️
目录 普通用法 async和await 依赖分析 使用场景 Future.await的使用 微任务普通用法future的使用void futureUse1() { print('1'); Future(() { print('异步任务'); }); print('2'); /* flutter: 1 flutter: 2 flutter: 异步任务 */}future的使用void futureUse3() { print('1'); F...…
-
6 布局
目录 普通布局 横向布局 纵向布局普通布局Alignment(0.0, 0.0),flutter的坐标原点在屏幕中间。(-1,-1)是左上角Container( color: Colors.green, width: 300, height: 300, alignment: const Alignment(0, 0), child: Container( color: Colors.blue, height: 150, child: const Aspec...…
-
5 常用控件
目录 架子介绍 常用Widget 重要Widget架子介绍程序的入口函数,runApp() 相当于UIApplicationMain()方法void main() { runApp(const MyApp());}Widget 小部件 有状态:Stateful 可变,比如颜色 无状态:Stateless 不可变 build方法 -> 渲染方法。build方法返回什么,就渲染什么常用Widget一、容器相当于UIViewContainer( width: 100, h...…