Flutter 从零开始(九):本地存储与离线优先,几种方案各自的边界
这周处理了两条反馈,都不是崩溃。 第一条来自一个老用户:他手机上有一份没同步出去的草稿,升级到新版本之后打开草稿箱是空的。数据没被删——是我改了 drafts 表的字段,而本地那个库文件早就存在了,建表那段代码一次都没执行过。 第二条…
flutter,移动端应用开发,移动端,iOS, android
这周处理了两条反馈,都不是崩溃。 第一条来自一个老用户:他手机上有一份没同步出去的草稿,升级到新版本之后打开草稿箱是空的。数据没被删——是我改了 drafts 表的字段,而本地那个库文件早就存在了,建表那段代码一次都没执行过。 第二条…
我这周处理的一条反馈很没道理:用户在联系人详情页点「同组的人」进另一个详情,再按 Android 的返回键,回到的不是刚才那个列表,而是首页。两个页面本身都正常,控制台一行报错都没有。 查下去的结论是那次跳转我写的是 context.…
上一篇把网络层收拢之后,我手上剩下一个更难看的角落:model/contact.dart 那个文件。十二个字段,一个类里三段——成员声明、fromJson 里十二行 json['x'] as T、toJson 里十二行 'x': in…
我那个通讯录 App 的网络层,第一版是每个页面自己 Dio().get(...),catch 里各写各的提示。功能都能跑,我也没觉得有问题,直到后端把 token 的 header 名从 X-Token 换成 Authorizati…
我做的第一个带长列表的页面,是本地通讯录的展示,两百多条联系人,一帧都不掉。等到接上服务端接口、数据涨到三千条,手指按住屏幕往上拖,列表就开始一顿一顿。那时候我的第一反应是「Flutter 列表性能不过如此」,后来才知道问题基本都不在…
我刚开始写 Flutter 的时候,调布局的手法跟当年写网页差不多:宽度不对就套一层 SizedBox,挤了就减 padding,改一轮跑一轮看效果。字体放大一档、或者换到平板,之前调好的间距又开始溢出。真正让我停下来的是一次 Ren…
前两篇我都在讲怎么把界面搭起来,这一篇讲那个「界面之外的部分」:数据放在哪、谁能读到它、它变了谁跟着变。 我是从「项目里第三个把回调函数往下传的文件」开始认真想这件事的。在那之前我对 setState 的理解是「改了变量就调一下它」,…
这一篇讲 Dart 本身。我是带着 Java 和一点 JS 的背景进 Flutter 的,头两周真正拖住我的不是 Widget 和布局,而是 Dart 里那些「看着眼熟但意思不一样」的东西:late、const、mixin、await…
这是系列的第一篇,目标很具体:把开发环境装好、跑通第一个应用,并且在这个过程中把 Flutter 最容易让人误解的两件事讲清楚——它的渲染方式,以及 Widget 到底是个什么东西。我自己是先把这两处理顺了,后面写起来才不拧巴。
举例,比如Bilibili的应用可以设置后台停止播放的功能。那么如何在Flutter中实现呢? Flutter根据应用状态判断APP是否后台运行,通过以下代码可以实现:
在Flutter中获取屏幕尺寸信息是通过MediaQuery.of(context)来获取。 属性说明 size一个包含宽度和高度的对象,单位是dp(乘以密度就是你设备的像素) devicePixelRatio密度(像素比) text…
启动项目时,Gradle报下面异常: 解决方案: 根据提示, 第一种,修改IDE的配置,可以是我找了半天就没有找到IDE上面关于Gradle修改JDK配置的地方。所以第一种方法我放弃了。 第二种,修改环境变量,可是我的JAVA_HOM…