You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Flutter中‘Avoid using private types in public APIs’警告的修复方法咨询

修复Flutter中“Avoid using private types in public APIs”警告的方法

嘿,这个警告我之前开发Flutter项目时也碰到过,其实本质原因很简单:你定义的_SubCategoriesPage是个库私有类(Dart里以下划线开头的类/成员只能在当前库内访问),但StatefulWidgetcreateState方法是公共API的一部分,直接返回私有类型就会触发这个警告。

下面给你两种可行的修复方案:

方案一:将State类改为公共类

直接去掉State类名称前的下划线,让它变成公共类,这样就符合公共API的要求了:

class SubCategoriesPage extends StatefulWidget {
  final MainModel mainModel;
  const SubCategoriesPage(this.mainModel, {Key? key}) : super(key: key);

  @override
  SubCategoriesPageState createState() {
    return SubCategoriesPageState();
  }
}

// 去掉下划线,改为公共类
class SubCategoriesPageState extends State<SubCategoriesPage> {
  // 你的State逻辑代码
}

方案二:显式指定createState的返回类型(保持State类私有)

如果你想继续让State类保持私有(比如不想暴露内部实现细节),可以显式声明createState的返回类型为State<SubCategoriesPage>,而不是让Dart自动推断返回私有类型:

class SubCategoriesPage extends StatefulWidget {
  final MainModel mainModel;
  const SubCategoriesPage(this.mainModel, {Key? key}) : super(key: key);

  // 显式指定返回类型为State<SubCategoriesPage>
  @override
  State<SubCategoriesPage> createState() {
    return _SubCategoriesPage();
  }
}

// 依然保持私有类
class _SubCategoriesPage extends State<SubCategoriesPage> {
  // 你的State逻辑代码
}

两种方案都能解决这个警告,你可以根据自己的需求选择:如果需要在其他库中访问这个State类,选方案一;如果只想在当前库内使用State类,选方案二更合适。

内容的提问来源于stack exchange,提问作者Ankit Kumar

火山引擎 最新活动