Flutter 最佳实践 - 04

原文 https://vipinvijayannair.medium.com/

前言

作者把工作中的经验这样了罗列,这是第 4 部分,持续更新。

正文

1. 对不修改的变量使用 final/const 关键字

" final"表示单一赋值: final 变量或字段必须有一个初始值设定项。一旦分配了一个值,就不能更改最终变量的值。Final 修改变量。

如果你不知道在编译时的值,那么 final 应该用在 const 上,并且它会在运行时被计算/获取。

如果您有一个 const 集合,那么其中的所有内容都是 const。如果您有一个最终的集合,那么其中的所有内容都不是最终的。

还有更多的差异和例子,以便更好地理解。

// Don’t
String firstName = "John"
int a = 1

// Dofinal
String firstName = "John"
const int a = 1

//or
const a = 1

2. 不要用 + 连接字符串,使用字符串插值

// Don't
final String firstName = "John";
final String text = firstName + " Doe"

// Do
final String firstName = "John";
final String text = "$firstName Doe"

3. 不要创建一个 Lambda,只要 tear-off 就可以了

如果我们有一个函数,它调用的方法具有与传递给它的参数相同的参数,那么就不需要手动将调用封装在 lambda 中。

List<String> names = []

// Don’t
names.forEach((name) {
  print(name);
});

// Do
names.forEach(print);

4. 使用异步/等待更易读的方式

// Don’t
Future<int> getUsersCount() {

  return getUsers().then((users) {

    return users?.length ?? 0;

  }).catchError((e) {

    log.error(e);

    return 0;

  });

}

// Do
Future<int> getUsersCount() async {

  try {

    var users = await getActiveUser();

    return users?.length ?? 0;

  } catch (e) {

    log.error(e);

    return 0;

  }

}

5. 对具有相同视图的构建列表使用 ListView.Builder。

  • Listview.builder 创建列表,该列表仅根据需要构建行视图。
  • Listview.builder 对用户可见的行视图重用屏幕之外的行视图。
  • 默认 ListViews 列表视图不会重用这些行,并且会一次创建所有列表,如果列表太大,这可能会导致性能问题。

结束语

如果本文对你有帮助,请转发让更多的朋友阅读。

也许这个操作只要你 3 秒钟,对我来说是一个激励,感谢。

祝你有一个美好的一天~

猫哥课程


© 猫哥

  • 微信 ducafecat

  • https://wiki.ducafecat.tech

  • https://ducafecat.com

Last Updated:
Contributors: ducafecat