Swi*_*ese 10 dart flutter dart-null-safety
我正在将一个大型项目迁移到空安全的过程中,遇到一个奇怪的错误,我不完全确定如何修复。
“错误:类型参数‘T’不符合‘GetIt.call’上类型变量‘T’的绑定‘对象’。”
class BaseView<T extends BaseProvider?> extends StatefulWidget {
final Widget Function(BuildContext context, T value, Widget? child)? builder;
final Function(T)? onModelReady;
BaseView({this.builder, this.onModelReady});
@override
_BaseViewState<T> createState() => _BaseViewState<T>();
}
class _BaseViewState<T extends BaseProvider?> extends State<BaseView<T?>> {
T model = locator<T>(); <---- This is throwing it
@override
void initState() {
if (widget.onModelReady != null) {
widget.onModelReady!(model);
}
super.initState();
}
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<T?>(
create: (context) => model,
child: Consumer<T>(builder: widget.builder!),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我找不到有关此错误的太多信息,到目前为止我尝试过的任何方法都没有成功。有人可以帮忙吗?
我使用 Provider 进行状态管理,而 BaseView 是在构建过程中包装所有其他视图的;例如:
class EquipmentMainView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BaseView<EquipmentProvider>(
onModelReady: (model) async {
model.getAllFunctions();
},..
Run Code Online (Sandbox Code Playgroud)
在这里发布给将来可能最终遇到此问题的其他人,只需通过更改来更改 jamesdlin 建议的 BaseProvider 的可空性
class BaseView<T extends BaseProvider?>
Run Code Online (Sandbox Code Playgroud)
到
class BaseView<T extends BaseProvider>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18794 次 |
| 最近记录: |