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
我最近格式化了我的笔记本电脑,所有项目都停止了, 在主要方法中第一个 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