一些Flutter开发技巧

使用Text的注意事项

如果字符串中有特殊字符,在有多行的情况下,可能会出现异常截断的情况,建议封装一个扩展函数处理这种情况

1
2
3
4
5
6
import 'package:flutter/material.dart';

// https://github.com/flutter/flutter/issues/18761
extension StringExt on String {
String get overflow => Characters(this).replaceAll(Characters(''), Characters('\u{200B}')).toString();
}

编写列表页时的注意事项

  • 骨架屏的设置
Read More

flutter_easy_refresh

Flutter的刷新组件以前比较流行的是pull_to_refresh,现在已经不再维护了,新的刷新组件是easy_refresh,支持Flutter SDK 3.x。它的特点:

  • 支持所有的滚动组件
  • 滚动物理作用域,精确匹配滚动组件
  • 集成多个炫酷的 Header 和 Footer
Read More

Flutter体系

概述

Flutter架构最核心的便是Framework(框架)和Engine(引擎):

  • Flutter Framework层:用Dart编写,封装整个Flutter架构的核心功能,包括Widget、动画、绘制、手势等功能,有Material(Android风格UI)和Cupertino(iOS风格)的UI界面, 可构建Widget控件以及实现UI布局。
  • Flutter Engine层:用C++编写,用于高质量移动应用的轻量级运行时环境,实现了Flutter的核心库,包括Dart虚拟机、动画和图形、文字渲染、通信通道、事件通知、插件架构等。引擎渲染采用的是2D图形渲染库Skia,虚拟机采用的是面向对象语言Dart VM,并将它们托管到Flutter的嵌入层。shell实现了平台相关的代码,比如跟屏幕键盘IME和系统应用生命周期事件的交互。不同平台有不同的shell,比如Android和iOS的shell。
Read More