手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

flutter中页面渲染完成的回调

 这玩意就有点象vue中的mounted/或者其他的afterLoad等操作。怎么突然想要用到这个呢,是因为我用了getX,之前用riverpod,也没注意过这个问题。用了GetX之后,这个东西就被派上用场了。

原因是我有一个设置背景图的功能。本来想着一切换页面,背景图就加载出来,但事实上我把这个功能提前后,进入页面就直接报错,说是obx在页面没有渲染完成的时候不能调用。

This Obx widget cannot be marked as needing to build because the framework is already in the process of building widgets. A widget can be marked as needing to be built during the build phase only if one of its ancestors is currently building. This exception is allowed because the framework builds parent widgets before children, which means a dirty descendant will always be built. Otherwise, the framework might not visit this widget during this build phase.

于是,使用:

WidgetsBinding.instance.addPostFrameCallback((time) { 

     final back = Get.find<BackgroundController>(); 

     back.set(Assets.backgroundImage); 

});

问题解决

flutter 的dialog如何自定义宽度

比如我们常用的alertDialog,只要显示一个message,不显示title的话,有点象toast。这时候如何自定义宽度 呢?

 

如果你直接在content中包含一个sizedbox,定义宽度为200,或者更小,你会发现其实是没有用的 ,通过翻看源码可以了解到。其他他是在组件上方定义了一个ConstrainedBox,然后设置了minWidth = 280.所以你设置低于280的,怎么都没用。
 
要解决这个问题也不难,在Dialog上面包两个组件UnConstraintedBox,和container。先用uncontraintedbox解除限制,再使用container来定义宽高。问题就这么解决了

flutter 中 getx 如何监听list

 正常情况下,我们都知道,flutter使用getx的时候,只要在Obx方法中都可以监听变量的变更,同时会局部刷新Obx包裹的Widget,但如果GetxController绑定的变量是list的时候,你会发现,无论你怎么 处理,Widget都不刷新。

有个最简单的办法:在设置变量的时候,同时让他refresh一下。比如:

count.value.add(1);

count.refresh();

这时候再看Widget就都更新了。

纯记录

mac触摸版3指以上功能失效的解决方法

 在使用mac的时候,偶尔会出现触摸板3指以上的功能失效,这个太影响使用了,毕竟mac最有用的功能,我感觉就是窗口切换。。。触摸板在外接键盘后,这就是我唯一的功能了,如果他也失效,那实在令人痛苦

 
这时候有一个快速解决方案,那就是:打开活动监视器,找到程序坞,强制退出,这时候程序坞会自动重启,再试一下三指功能,恢复正常~
或者终端,killall Dock。也是同样的原理~

'MACOSX_DEPLOYMENT_TARGET' is set to 10.6, but the range of supported deployment target versions is 10.9 to 12.3.99.

在开发flutter的macOS版时,报这个错误:./macos/Pods/Pods.xcodeproj: warning: The macOS deployment target 'MACOSX_DEPLOYMENT_TARGET' is set to 10.6, but the range of supported deployment target versions is 10.9 to 12.3.99. 

可以很明确的看到文件是:/macos/Pods/Pods.xcodeproj,虽然这个warning并不影响程序的运行,看确实看了不舒服,于是打开/macos/Pods/Pods.xcodeproj,搜索:MACOSX_DEPLOYMENT_TARGET,一共有3处,将他对应的值10.6,修改为10.9,问题解决。