
flutter入门+进阶
文章平均质量分 96
flutter开发中的方方面面及经验总结
BennuCTech
BennuCTech
展开
-
【Flutter混合开发】开发一个简单的快速启动框架
因为在移动端中启动Flutter页面会有短暂空白,虽然官方提供了引擎预热机制,但是需要提前将所有页面都进行预热,这样开发成本较高,在研究了闲鱼的FlutterBoost插件后,我看看能不能自己实现一个简单的快速启动框架。这篇文章用到的知识点都在《flutter混合开发:native与flutter交互》中详细讲解了,大家可以先读一下这篇文章再来看本文。本文不再赘述这些内容,直接上干货。原创 2023-06-06 10:47:59 · 510 阅读 · 0 评论 -
【Flutter混合开发】在Android项目中如何启动Flutter
flutter可以独立完成项目,但是在现有项目情况下最好的方式就是混合开发,逐步过渡。这样就会共存native和flutter代码,而其中最关键的就是native如何启动flutter页面,及flutter与native如何交互。本文以Android为例,展示如何在一个现有项目中引入flutter、启动flutter,如何加速启动以及如何传参。原创 2023-05-18 17:00:29 · 1074 阅读 · 0 评论 -
【Flutter开发】Navigator2.0介绍及使用
Navigator1.0是通过Navigator来管理处理路由,而Navigator2.0则是通过Router来处理的,但是也需要Navigator,实际上是用Router对Navigator包裹起来。Router相对来说功能就强大很多了,同时使用起来也复杂很多。原创 2023-05-18 16:56:17 · 1400 阅读 · 1 评论 -
【Flutter进阶】聊一聊组件中的生命周期、状态管理及局部重绘
说到生命周期,熟悉Android开发的小伙伴一定第一时间会想到Activity的生命周期,由于在Flutter中一切都是组件,所以组件的生命周期其实是类似的。在这个过程中组件的状态——State就非常重要,它记录这整个组件内可变部分的状态,当状态发生改变时就需要刷新组件以显示最新的状态。当然,如果组件比较复杂的时候,其中一个状态改变就导致整个组件的刷新是不可取的,这就涉及到Flutter中的局部重绘即局部刷新的机制。原创 2023-04-13 16:00:44 · 857 阅读 · 0 评论 -
【Flutter开发】如何捕获处理Error
Flutter 框架可以捕获运行期间的错误,包括构建期间、布局期间和绘制期间。所有 Flutter 的错误均会被回调方法 FlutterError.onError 捕获。默认情况下,会调用 FlutterError.dumpErrorToConsole 方法,正如方法名表示的那样,将错误转储到当前的设备日志中。当从 IDE 运行应用时,检查器重写了该方法,错误也被发送到 IDE 的控制台,可以在控制台中检查出错的对象。原创 2023-04-04 17:34:53 · 900 阅读 · 0 评论 -
【Flutter进阶】与Native进行交互的三种方式
上面我们展示了三种交互方式的使用,并解析了其内部的联系。其实可以看到三种方式最终其实都是使用了BinaryMessenger这一抽象类的默认实现_DefaultBinaryMessenger。所以如果我们通过BinaryMessenger来实现一套自己特别的消息传递机制。原创 2023-02-16 16:14:24 · 1593 阅读 · 0 评论 -
【Flutter混合开发】在已有iOS项目中引入Flutter
前言在android项目中添加flutter模块比较简单,因为毕竟都是google的,但是在ios中添加flutter模块有些麻烦了,我们首先参考的是官方文档https://flutter.cn/docs/development/add-to-app/ios/project-setup但是在实际过程中会遇到各种问题(当然我本身对ios开发不熟悉也造成了不小的困扰),这里结合官方的步骤和我的经验来说说整个接入过程和遇到的坑。我的环境是Android Studio 4.0.1 + Xcode12.4 +原创 2022-06-02 10:16:02 · 5929 阅读 · 0 评论 -
Flutter Web中刷新与后退问题
前言使用flutter开发web页面,在pc端使用就会面临刷新的问题。尤其是刷新时,本地变量清空导致页面问题,所以就需要考虑全局缓存的问题。刷新正常情况下,我们通过Navigator来进行页面切换:Navigator.of(context).pushNamed(String routeName, {Object? arguments,});通过这种方式可以传参,然后在新的页面可以通过ModalRoute.of(context).settings.arguments获取传参并使用。但是如果是we原创 2022-04-12 09:38:57 · 3074 阅读 · 0 评论