【问题标题】:The parameter 'builder' can't have a value of 'null' because of its type, but the implicit default value is 'null'参数 'builder' 的值不能为 'null',因为它的类型,但隐含的默认值是 'null'
【发布时间】:2022-01-03 09:22:19
【问题描述】:

我正在尝试将我以前的应用程序与以下代码一起使用,但 Flutter 中似乎发生了一些更新,我收到以下错误:

import 'package:flutter/material.dart';

class CustomRoute<T> extends MaterialPageRoute<T> {
  CustomRoute({
    WidgetBuilder builder,
    RouteSettings settings,
  }) : super(
          builder: builder,
          settings: settings,
        );

  @override
  Widget buildTransitions(
    BuildContext context,
    Animation<double> animation,
    Animation<double> secondaryAnimation,
    Widget child,
  ) {
    if (settings.name == '/') {
      return child;
    }
    return FadeTransition(
      opacity: animation,
      child: child,
    );
  }
}

class CustomPageTransitionBuilder extends PageTransitionsBuilder {
  @override
  Widget buildTransitions<T>(
    PageRoute<T> route,
    BuildContext context,
    Animation<double> animation,
    Animation<double> secondaryAnimation,
    Widget child,
  ) {
    if (route.settings.name == '/') {
      return child;
    }
    return FadeTransition(
      opacity: animation,
      child: child,
    );
  }
}

错误:

参数“builder”的值不能为“null”,因为它 类型,但隐含的默认值为“null”。尝试添加一个 显式非“null”默认值或“必需”修饰符。

我尝试添加required@required,但均未成功。`

【问题讨论】:

  • 添加required后,错误是什么?
  • 我添加了required,错误消失了
  • @MiftakhulArzak:如果我在builder 之前添加required,它会给我这个新错误:The parameter 'required' can't have a value of 'null' because of its type, but the implicit default value is 'null'. Try adding either an explicit non-'null' default value or the 'required' modifier.
  • @MiftakhulArzak:是的,你是对的。我把required放错地方了!

标签: flutter routes required non-nullable


【解决方案1】:

你可以这样使用吗?因为它没有给出错误:

import 'package:flutter/material.dart';

class CustomRoute<T> extends MaterialPageRoute<T> {
  CustomRoute({
   required WidgetBuilder builder,
   required RouteSettings settings,
  }) : super(
          builder: builder,
          settings: settings,
        );

  @override
  Widget buildTransitions(
    BuildContext context,
    Animation<double> animation,
    Animation<double> secondaryAnimation,
    Widget child,
  ) {
    if (settings.name == '/') {
      return child;
    }
    return FadeTransition(
      opacity: animation,
      child: child,
    );
  }
}

class CustomPageTransitionBuilder extends PageTransitionsBuilder {
  @override
  Widget buildTransitions<T>(
    PageRoute<T> route,
    BuildContext context,
    Animation<double> animation,
    Animation<double> secondaryAnimation,
    Widget child,
  ) {
    if (route.settings.name == '/') {
      return child;
    }
    return FadeTransition(
      opacity: animation,
      child: child,
    );
  }
}

我尝试添加required,它成功了。

【讨论】:

    猜你喜欢
    • 2021-06-24
    • 2021-10-28
    • 2021-11-12
    • 2022-01-20
    • 1970-01-01
    • 2021-09-05
    • 2022-06-14
    • 2022-08-13
    • 2021-10-26
    相关资源
    最近更新 更多