Flutter 中的“避免在公共 API 中使用私有类型”警告

Ank*_*mar 19 dart flutter

我一直在从事一个 flutter 项目,我注意到避免在公共 API 中使用私有类型。有办法解决这个警告吗?

 class SubCategoriesPage extends StatefulWidget {
  final MainModel mainModel;

  // final Ads ad;

  const SubCategoriesPage(this.mainModel, {Key? key}) : super(key: key);

  @override
  _SubCategoriesPage createState() { // Avoid using private types in public APIs.
    return _SubCategoriesPage();
  }
}
Run Code Online (Sandbox Code Playgroud)

Har*_*rma 43

因为createState方法返回State<Example>所以它阻止返回任何 private State.

您需要像这样更新您的代码。

class SubCategoriesPage extends StatefulWidget {
  final MainModel mainModel;

  // final Ads ad;

  const SubCategoriesPage(this.mainModel, {super.key});

  @override
  State<SubCategoriesPage> createState() { // Avoid using private types in public APIs.
    return _SubCategoriesPage();
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

我有同样的问题

class CotizacionScreen extends StatefulWidget {
  const CotizacionScreen({super.key});

  @override
  State<CotizacionScreen> createState() => _CotizacionScreenState();
}
Run Code Online (Sandbox Code Playgroud)

我通过更改解决了这个问题:

@override
_CotizacionScreenState createState() => _CotizacionScreenState();
Run Code Online (Sandbox Code Playgroud)

经过:

@override
State<CotizacionScreen> createState() => _CotizacionScreenState();
Run Code Online (Sandbox Code Playgroud)


小智 5

由于这是一个StatefulWidget,我猜测该类_SubCategoriesPage继承自State,因为它由 . 返回createState()

如果是这样,返回类型可以更改为State. 由于State是公共的,因此可以安全地从公共方法返回它createState()

  • 非常感谢您的回答。但是您能否提供我需要在此代码中进行的更改? (2认同)