Skip to main content

23 posts tagged with "Flutter"

View All Tags

Flutter App 架构的 Domain 层

· 6 min read

Flutter App 架构的 Domain 层

在现代 Flutter 应用开发中,架构设计的清晰性和可维护性至关重要。Domain 层作为架构的核心部分,负责封装业务逻辑和数据模型,是实现良好架构的关键。本文将深入探讨 Flutter 应用中的 Domain 层,包括其定义、组成部分以及如何有效地实现和测试。

Flutter App 架构的 Presentation 层

· 5 min read

在 Flutter 应用开发中,Presentation 层是用户界面与业务逻辑之间的桥梁。它负责展示数据并处理用户输入,同时确保业务逻辑与 UI 代码的分离。这种分离使得代码更加可测试和易于维护,尤其是在应用变得复杂时。本文将深入探讨 Flutter 应用中的 Presentation 层,包括其结构、功能以及如何有效实现。

Flutter App 架构之 Repository 模式

· 10 min read
info

2024.10.20 更新: 补充 Repository 与状态管理结合的解决方案

在 Flutter 应用开发中,Repository 模式是一种重要的架构设计模式,它帮助我们有效地管理和访问不同数据源的数据。通过将数据访问逻辑与业务逻辑和用户界面分离,Repository 模式能够提高代码的可维护性和可测试性。本文将深入探讨 Repository 模式的定义、使用场景、实现细节以及如何进行测试。

Flutter App 架构图

Flutter App 架构之 Riverpod 库介绍

· 8 min read

Riverpod 是一个强大的状态管理库,旨在简化 Flutter 应用程序中的状态管理。作为 Provider 的演进版,Riverpod 提供了更灵活和可扩展的方式来处理应用程序的状态。本文将介绍 Riverpod 的基本使用,包括各种 Provider 类型的使用,以及与 Provider 的对比,并展示在真实开发场景中的应用。

Flutter 环境变量与 Flavor 的最佳实践

· 12 min read

flutter-flavors

tip

2024.10.20 更新: 优化文档结构,补充 ENVied 库内容

2024.6.27 更新: 补充原生环境读取 Flutter 环境变量的方法

2024.3.20 更新: Flutter 3.7 已经引入了 --dart-define-from-file 标志,它允许从文件中读取环境变量。

在 Flutter 开发中,如何管理 API 密钥和环境变量是一个关键问题。许多开发者可能会选择在代码中硬编码这些敏感信息,但这种做法存在诸多缺点。本文将探讨硬编码的缺陷、环境变量的优势、开源社区的可选方案,以及在真实环境中的实际应用。

基于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 是本地的,局部的,通常用于同级之间比较,比如列表之间增加、删除、排序等会改变顺序的操作。