修复 Flutter 公共类不允许有私有参数的问题

Posted on Wed, 25 Dec 2024 11:20:54 +0800 by LiangMingJian


问题

编写 Flutter 应用时,若 StatefulWidget 类中创建 _ExampleState 类,则编辑器会出现报错 LIBRARY_PRIVATE_TYPES_IN_PUBLIC_API,提示用户不要在公共函数或类中使用私有参数。

这是由于 Flutter 的编程规范出现变更: 不要在库的公开的API中使用私有类型(library_private_types_in_public_api)

解决方案

将以下内容:

class Example extends StatefulWidget {
  const Example({Key? key}) : super(key: key);

  @override
  _ExampleState createState() => _ExampleState();
}

class _ExampleState extends State<Example> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

重写为:

class Example extends StatefulWidget {
  // you can also now use a super initializer for key 
  // if you are using dart 2.17
  const Example({super.key});

  // now returning State<Example>
  @override
  State<Example> createState() => _ExampleState();
}

class _ExampleState extends State<Example> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
参考文件 1: library_private_types_in_public_api and StatefulWidget-Flutter