延后2flutter

Flutter:use_key_in_widget_constr

2021-12-27  本文已影响0人  不思进取的码农

一.Flutter的构造器

BAD:

class MyPublicWidget extends StatelessWidget {
}

GOOD:

class MyPublicWidget extends StatelessWidget {
  const MyPublicWidget({Key? key}) : super(key: key);
}

(1)为什么使用const

这里引入一下 finalconst的区别

什么是创建常量值的构造函数
class ImmutablePoint {
  static final ImmutablePoint origin =
      const ImmutablePoint(0, 0);

  final num x, y;

  const ImmutablePoint(this.x, this.y);
}
常量构造函数生成的一定是常量对象吗?

答案是否定的

(2)构造器参数{}是什么?

    首先`Dart`分为以下几种
下面是使用可选参数调用上面方法的示例:

```dart
assert(say('Bob', 'Howdy', 'smoke signal') ==
    'Bob says Howdy with a smoke signal');
```

> 注意 可选位置参数一定要要必须位置参数后面

注意 可选位置参数一定要要必须位置参数后面

使用 @required注释表示参数是 required 性质的命名参数:

const Scrollbar({Key key, @required Widget child})

此时 Scrollbar 是一个构造函数, 当 child 参数缺少时,分析器会提示错误

(3)Key是什么?

key我们可以理解为每个控件所独有的一个ID,用以识别是哪个UI。Key 能够帮助开发者在 Widget tree 中保存状态,有了keyelementrenderObject就会被强行重建,从而得到所见即所得的效果

key的分类

(4).use_key_in_widget_constructors 两种解决办法

1.采用推荐的构造器

class MyPublicWidget extends StatelessWidget {
  const MyPublicWidget({Key? key}) : super(key: key);
}

2.在项目的根目录analysis_options.yaml文件添加忽略

# Add these lines
linter:
  rules:
    use_key_in_widget_constructors: false
上一篇 下一篇

猜你喜欢

热点阅读