小编ras*_*yaz的帖子

如何在 Flutter 中用动画改变行/列状态?

我在布局中使用行和列,并从互联网加载一些数据以在行和列中显示信息。

我想设计一个动态加载页面,使得每个加载的数据都使特定的小部件通过动画可见(通过平滑地移动其他小部件)。

我目前在布局中使用 if 子句,并setState()在检索新数据时调用。

Column(
  children: [
    SomeWidget(),
    if (data != null)
      DataWidget(),
    AnotherWidget(),
  ],
),
Run Code Online (Sandbox Code Playgroud)

检索某些数据后,如何在带有动画的行/列中的其他小部件之间插入小部件?

widget dart flutter flutter-layout flutter-animation

5
推荐指数
1
解决办法
7280
查看次数

如何做出 null 安全断言以避免在 Flutter 中使用 null 检查 (!) 或条件 (?) 运算符?

当我在语句中使用变量时,Dart 编译器不明白该变量不能为 nullif (x != null)。它仍然需要使用条件?或空检查!运算符来访问变量的字段或方法之一。

这是一个例子:

String? string;

void test() {
  if (string != null) {
    print(string.length);
  }
}
Run Code Online (Sandbox Code Playgroud)

这会产生一个编译时错误并表示

无法无条件访问属性“length”,因为接收者可以为“null”。尝试使访问成为有条件的(使用“?.”)或向目标添加空检查(“!”)。

然而,接收者实际上不能为空,因为它是用if (string != null)块包裹的。string?.length使用或访问字段string!.length效果很好,但当我需要使用变量的不同字段或方法时,可能会感到困惑。

String? string;

void test() {
  if (string != null) {
    print(string.length);
    print(string.isNotEmpty);
    print(string.trim());
    print(string.contains('x'));
  }
}
Run Code Online (Sandbox Code Playgroud)

所有这些陈述都会引发相同的错误。我也尝试放置assert(string != null);,但编译器仍然不明白该字符串不为空。

举一个更复杂的例子;

User? user;

@override
Widget build(BuildContext context) {
  if (user == null) {
    return Text('No user available');
  } else { …
Run Code Online (Sandbox Code Playgroud)

dart flutter dart-null-safety

5
推荐指数
1
解决办法
1631
查看次数