flutter 2.2 更新代码停止工作,某些项目中没有模拟器

flutter 2.2 update code stopped working and no emulator in some projects

我最近格式化了我的笔记本电脑,所有项目都停止了, 在主要方法中第一个 class,我有这些错误

class MyApp extends StatefulWidget {
  static void setLocale(BuildContext context, Locale locale) {
    _MyAppState state = context.findAncestorStateOfType<_MyAppState>();
    state.setLocale(locale);
  }

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Locale _locale;

错误 1 ​​表示错误:“_MyAppState”类型的值?不能分配给“_MyAppState”类型的变量。 (invalid_assignment 在 [AppName] lib\main.dart:35) 错误 2 说错误:必须初始化不可为 null 的实例字段“_locale”。 (not_initialized_non_nullable_instance_field 在 [AppName] lib\main.dart:44)

我不能再使用 null

  setState(() {
        if (stut != null) buttonState = 0;
      });

stut 错误:不可为 null 的局部变量 'stut' 必须先赋值才能使用。 (not_assigned_potentially_non_nullable_local_variable 在 [AppName] lib\myWidgets\AddToBasketButton.dart:65),

必需和非必需的问题 这是我的代码

class SectionButtonClass {
  final String title, image;
  final int index;
  final String phone;
  // final Color titleColor;
  const SectionButtonClass(
      {required this.title, required this.image, this.index, this.phone});
}

所有不需要的变量都有错误,请注意,更新后它是@required,我不得不删除@信号。

WillPopScop 的 pressBack 方法因错误停止工作

  // ignore: missing_return
  Future<bool> _pressBack() {
    Navigator.pushReplacement(
      context,
      MaterialPageRoute(
        builder: (context) {
          return widget.backTo;
        },
      ),
    );
  }

错误:正文可能正常完成,导致 'null' 被 returned,但 return 类型可能是不可为 null 的类型。 (body_might_complete_normally 在 [AppName] lib\UI\AboutUsScr.dart:43)

  // ignore: missing_return
  Future<bool> pressBack() {
    Navigator.of(context).pushReplacement(
        new MaterialPageRoute(builder: (BuildContext context) => LoginScr()));
  }

错误:正文可能正常完成,导致 'null' 被 returned,但 return 类型可能是不可为 null 的类型。 (body_might_complete_normally 在 [AppName] lib\UI\ActivePhoneNoForgetMyPasswordCodeScr.dart:132)

如果你打开你的 pubspec.yaml 文件,你可能有这样的东西:

version: 1.0.0+1

environment:
  // sdk might be also set to 2.12.0
  sdk: ">=2.9.0 <3.0.0" 
//rest

无论如何,此代码和您的代码的问题在于,从 Dart v2.9 开始,有一个名为 null-safety 的功能:Read more here

为了解决这个问题,您可以将 sdk 降级到低于 2.9.0 的版本,例如 2.7.0,这可能是更简单的选择,但不是更好。

为了真正使用最新标准,您需要开始在您的代码中以某种方式实现空安全,例如Key key 现在将是 Key? key

更多信息也在这里:https://dart.dev/null-safety