型別 '(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,
);
};
uj5u.com熱心網友回復:
過渡生成器:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/330700.html
下一篇:未處理的例外:型別'(String,int)=>Future<Null>'不是型別轉換中型別'(String,int?)=>void'的
