Constructors in '@immutable' classes should be declared as 'const'.
  G4l4hCJqRVjT 2023年11月25日 24 0

警告信息

Flutter开发遇到如下警告 Constructors in '@immutable' classes should be declared as 'const'.

报错代码

class TaskWidget extends StatefulWidget {
  final String title;
  final bool isChecked;
  final int order;

  TaskWidget({
    required this.title,
    required this.isChecked,
    required this.order,
    Key? key,
  }) : super(key: key);

  @override
  State<TaskWidget> createState() => _TaskWidgetState();
}

警告原因

这个警告是由于在Flutter中,如果你定义的类是不可变的额,你最好用@immutable注解标记标记下,即使你不标记,代码检测也会检测出来。当你使用@immutable注解标记一个类时,它要求该类的构造函数应该声明为const构造函数。@immutable是一个元数据注解,用于指示类是不可变的,这样的类在某些情况下可以提供性能优势。

在Dart中,const构造函数表示该构造函数创建的对象是不可变的,这样的对象可以在编译时进行常量折叠,从而提高性能。当你标记一个类为@immutable时,Flutter希望你的构造函数也是const的,以确保对象的不可变性。

例如,以下是一个简单的使用@immutable注解的类:

@immutable
class MyImmutableClass {
  final int value;

  const MyImmutableClass(this.value);
}

在上面的例子中,构造函数被声明为const,这符合@immutable的要求。如果你的构造函数不是const的,就会收到该警告。在某些情况下,这可能是因为Flutter无法确定对象是否是不可变的,因此它会发出警告,以提醒你可能需要将构造函数声明为const。

修改后的代码

@immutable
class TaskWidget extends StatefulWidget {
  final String title;
  final bool isChecked;
  final int order;

  const TaskWidget({
    required this.title,
    required this.isChecked,
    required this.order,
    Key? key,
  }) : super(key: key);

  @override
  State<TaskWidget> createState() => _TaskWidgetState();
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: java生成ftp txt 下一篇: java判断AB先后
  1. 分享:
最后一次编辑于 2023年11月25日 0

暂无评论

G4l4hCJqRVjT