【问题标题】:Try correcting the name to the name of an existing getter, or defining a getter or field named 'isInitialRoute'尝试将名称更正为现有 getter 的名称,或定义名为“isInitialRoute”的 getter 或字段
【发布时间】:2020-06-27 00:56:22
【问题描述】:

我正在尝试使用以下库:

https://pub.dev/packages/animated_background

打电话给animated_background

当我尝试运行代码时,我发现了以下错误:

Compiler message:
lib/helpers/fade_route.dart:12:18: Error: The getter 'isInitialRoute' isn't defined for the class 'RouteSettings'.
 - 'RouteSettings' is from 'package:flutter/src/widgets/navigator.dart' ('/D:/programs/flutter/flutter/packages/flutter/lib/src/widgets/navigator.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'isInitialRoute'.
    if (settings.isInitialRoute)
                 ^^^^^^^^^^^^^^

因为这是包含错误的下图:

这是相关代码:

import 'package:flutter/material.dart';

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

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

class SimpleFadeRoute<T> extends FadeRoute<T> {
  SimpleFadeRoute({ Widget child, RouteSettings settings })
      : super(builder: (_) => child, settings: settings);
}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    那个属性was removed from RouteSettings。请参阅以下link 了解替代方案。

    我们从 RouteSetting 中删除了 isInitialRoute 属性,作为 重构,并提供完整的 onGenerateInitialRoutes API 控制初始路由生成。

    有多种方法可以迁移此更改。一种方法是设置 初始路由名称为固定值并生成特定路由 (上例中的 FakeSplashRoute)作为路由名称。

    MaterialApp(
      initialRouteName: ‘fakeSplash’,
      onGenerateRoute: (RouteSetting setting) {
        if (setting.name == ‘fakeSplash’)
          return FakeSplashRoute();
        else
          return RealRoute(setting);
      }
    )
    

    如果有更复杂的用例,可以使用新的 API, onGenerateInitialRoutes,在 MaterialApp 或 CupertinoApp 中。

    MaterialApp(
      onGenerateRoute: (RouteSetting setting) {
        return RealRoute(setting);
      },
      onGenerateInitialRoutes: (String initialRouteName) {
        return <Route>[FakeSplashRoute()];
      }
    )
    

    【讨论】:

    • 非常感谢您的回答和您的兴趣,那么我该如何在我的问题中发布的代码中实现这一点:D
    • 你不能使用迁移指南中的建议吗?
    • 我正在努力理解该指南,但这对我来说太复杂了 :(,但让我试着集中精力并按照指南进行操作,也许我可以得到完整的答案,非常感谢您的建议:).....我很快就会接受你的回答:).....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2020-09-03
    • 2023-02-07
    • 2022-08-22
    • 2022-06-10
    • 2022-07-26
    • 2021-11-28
    相关资源
    最近更新 更多