![](/img/trans.png)
[英]Generic dart: type '(BuildContext, String) => Padding' is not a subtype of type '(BuildContext, dynamic) => Widget'
[英]type '(BuildContext, Widget) => ChangeNotifierProvider<>' is not a subtype of type '(BuildContext, Widget?) => Widget' in type cast
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?
類型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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.