我注意到样式错误警告https://dart-lang.github.io/linter/lints/library_private_types_in_public_api.html在我的一些代码中弹出,也在一些官方 Flutter/Dart 文档/cookbook 示例中弹出; 例如在https://docs.flutter.dev/cookbook/animation/animated-container
...
class AnimatedContainerApp extends StatefulWidget {
const AnimatedContainerApp({super.key});
@override
_AnimatedContainerAppState createState() => _AnimatedContainerAppState();
}
class _AnimatedContainerAppState extends State<AnimatedContainerApp> {
...
Run Code Online (Sandbox Code Playgroud)
我对 OOP 及其术语的理解充其量是粗略的,我不太理解这个警告,但我真正的问题是,带有此警告的示例是否错误,或者是否不理想——或者该风格问题是否仅适用于某些上下文这可能与示例无关,或者我应该忽略它,或者它是 flutter/dart 版本或其他版本的结果?
我觉得linter规则discarded_future有问题
有没有办法使用discarded_future lint 规则,而不必每次使用FutureBuilder 时都忽略该规则。使用简单的 FutureBuilder 时触发规则是否正常?如果是,正确的方法是什么?
FutureBuilder<void>(
future: retrieveLostData(),
builder: (
BuildContext context,
AsyncSnapshot<void> snapshot,
) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return buildRowIconPhoto();
case ConnectionState.waiting:
return buildRowIconPhoto();
case ConnectionState.done:
return buildRowIconPhoto();
default:
return buildRowIconPhoto();
}
},
)
Run Code Online (Sandbox Code Playgroud)
Future<void> retrieveLostData() async {
LostDataResponse response = await _imagePicker.retrieveLostData();
if (response.isEmpty) {
return;
}
if (response.file != null && widget.onPhotoTaken != null) {
widget.onPhotoTaken!(
File(response.file!.path),
false,
);
}
}
Run Code Online (Sandbox Code Playgroud)