Skip to main content

18 posts tagged with "Flutter"

View All Tags

基于GetX的Flutter项目架构设计方案

· 11 min read

本文探讨的是一种基于 Flutter 进行全新 App 项目的开发模式,不涉及老的代码复用等问题。

关于在现有 Android 或 iOS 项目中接入 flutter 框架,这属于混合栈开发的内容,可以参考阿里巴巴的flutter boost的方案,或者企业微信的FlutterThrio方案。

本文假设读者已经基本熟悉 Flutter 的开发,并对主流的 Flutter 状态管理方案(Redux, Bloc, Provider 等)有一定的了解。

Flutter 解决iOS录制视频时前几帧黑屏的情况

· 2 min read

问题描述

官方的camera包 在录制视频时,第一次初始化后,前 100ms 左右的视频都是黑屏,第二次使用时没有这样的情况。

Google 一轮后,大部分回答是因为音频录制需要花时间准备,需要在startVideoRecording前调用prepareForVideoRecording操作来初始化 Audio Session,但是尝试过了,没有效果。

解决方案

在 stackoverflow 找到一个暴力的解决方案,直接丢弃这 100ms 的内容。在ios/Classes/CameraPlugin.m文件里修改如下代码即可:

-   _videoTimeOffset = CMTimeMake(0, 1);
- _audioTimeOffset = CMTimeMake(0, 1);
+ _videoTimeOffset = CMTimeMakeWithSeconds(1, 10);
+ _audioTimeOffset = CMTimeMakeWithSeconds(1, 10);

fork 了一份官方的代码,然后创建一个新的flutter-camera

Flutter Widget Key 要怎么用

· 2 min read

Key 有两种:GlobalKey,LocalKey。

GlobalKey 是整个 App 唯一的,通常用于全局 widget 的状态, 比如跨 Widget 访问状态。

LocalKey 是本地的,局部的,通常用于同级之间比较,比如列表之间增加、删除、排序等会改变顺序的操作。

Flutter GestureDetector无法获取点击事件的问题

· 3 min read

哪些情况

在有TextField的表单界面中,点击空白部分隐藏键盘是基本功能。但是如果GestureDetector直接包裹着TextField是无法响应onTap事件的,比如下面这种情况:

/// 1
GestureDetector(
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
child: TextField(),
)

Flutter通过BuildContext扩展来简化TextTheme

· 3 min read

通过 BuildContext 扩展来简化 TextTheme

ThemeData里面有三种文本主题:

  • textTheme:默认主题,文本的颜色与卡片和画布的颜色形成对比
  • primaryTextTheme:与 primaryColor 形成对比的文本主题
  • accentTextTheme:与 accentColor 形成对比的文本主题