Flutter中‘Avoid using private types in public APIs’警告的修复方法咨询
修复Flutter中“Avoid using private types in public APIs”警告的方法
嘿,这个警告我之前开发Flutter项目时也碰到过,其实本质原因很简单:你定义的_SubCategoriesPage是个库私有类(Dart里以下划线开头的类/成员只能在当前库内访问),但StatefulWidget的createState方法是公共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




