flutter - type '(BuildContext, Widget) => ChangeNotifierProvider<>' 不是类型转换中类型 '(BuildContext, Widget?) => Widget' 的子类型
问题描述
type '(BuildContext, Widget) => ChangeNotifierProvider' 不是类型转换中类型 '(BuildContext, Widget?) => Widget' 的子类型
嗨,我在将旧项目转换为 Flutter 2.5 时遇到上述错误,谁能帮我解决这个问题?
abstract class Role {
Widget homeBuilder(BuildContext context);
Map<String, WidgetBuilder>? routes;
/// The navigatorBuilder allows you to insert widgets between MaterialApp and its Navigator.
/// This is useful for providing the logged in Talent or Recruiter
TransitionBuilder? navigatorBuilder;
}
@override
TransitionBuilder navigatorBuilder =
(BuildContext context, Widget navigator) {
String token = Provider.of<AuthBloc>(context).token;
MyNotifications.setUpFirebaseMessaging(context);
return ChangeNotifierProvider<Talent>(
create: (ctx) =>
(Provider.of<AuthBloc>(context).role as TalentRole).talent
..setAuthToken(token),
child: navigator,
);
};
解决方案
过渡构建器:
typedef TransitionBuilder = Widget Function(BuildContext context, Widget? child);
需要一个上下文和一个孩子。孩子是类型的Widget?
,注意问号。这向您展示了小部件可以为空。
如果你定义了一个 TransitionBuilder,你也需要展示它,所以你需要改变
@override
TransitionBuilder navigatorBuilder =
(BuildContext context, Widget navigator) {
至
@override
TransitionBuilder navigatorBuilder =
(BuildContext context, Widget? navigator) { //add the question mark
有关空安全性的更多信息: https ://dart.dev/null-safety/understanding-null-safety
推荐阅读
- java - 构造函数 Client(String, String, String, String, String) 未定义
- mysql - 在条件下使用 DATE() 时,LEFT JOIN 像 INNER 一样工作
- c++ - 在向量中移动
- android - 我如何从云存储下载像 Whatsapp 这样的图像
- r - 连续变量的 ggplot2 geom_point 大小中断(类别)
- python - 添加元素后如何更新 QListView 小部件?
- flutter - 如何在 Mobx Flutter 中声明 observable 以在类的字段更改时触发?
- docusignapi - 升级到官方环境,收到如下错误“提供的客户端id没有在DocuSign注册”
- c - 尝试使用 malloc 分配内存时出错(读取冲突),它有时适用于前几个字符串,但最终会爆炸
- asp.net-core - 从 OnInitializedAsync Blazor 调用 javascript 时出现 JavaScript 互操作错误