Dart 功能没有像我希望的那样响应
Dart Functions Not Responding As I Would Have Liked It To
我对 flutter 和 dart 还很陌生,我在函数方面遇到了问题,我已经在这里花了太多时间了。任何帮助表示赞赏。谢谢
`void main(){
Car myCar = Car(drive:slowDrive);
myCar.drive();
}
class Car{
Car({this.drive});
Function drive;
}
void slowDrive(){
print('Driving Slowly');
}
错误:
编译为 JavaScript 时出错:
main.dart:32:13:
错误:可选参数 'drive' 应该有一个默认值,因为它的类型 'Function' 不允许空值。
- 'Function' 来自 'dart:core'。
汽车({this.drive});
^^^^^
错误:编译失败。
添加required
关键字:
void main(){
Car myCar = Car(drive:slowDrive);
myCar.drive();
}
class Car{
Car({required this.drive});
Function drive;
}
void slowDrive(){
print('Driving Slowly');
}
检查以下内容:
https://dart.dev/null-safety/understanding-null-safety#required-named-parameters
这会起作用,但不清楚您要实现的目标:
import 'package:flutter/material.dart';
void main(){
Car myCar = Car(drive: slowDrive);
myCar.drive.call();
}
class Car{
VoidCallback drive;
Car({this.drive});
}
void slowDrive(){
print('Driving Slowly');
}
错误:编译为 JavaScript 时出错:main.dart:32:13:错误:可选参数 'drive' 应该有一个默认值,因为它的类型 'Function' 没有不允许为空。
'Function' 来自 'dart:core'。汽车({this.drive}); ^^^^^ 错误:编译失败。
class Car{
Car({this.drive});
Function drive;
}
您编写它的方式({}
使参数可选),该值可以为 null,这就是它抱怨的原因,因为该函数永远不能为 null。
发生这种情况是因为新的 dart Null Safety 功能。
您需要添加 final 关键字并删除 {}
以便该值不可能为空。
class Car{
Car(this.drive);
final Function drive;
}
或者如 Peter 所说,添加 required 关键字,使其仍然使用可选语法,但它是必需的:
class Car{
Car({required this.drive});
final Function drive;
}
或添加默认函数:
class Car{
Car({this.drive = someFunction});
final Function drive;
}
我对 flutter 和 dart 还很陌生,我在函数方面遇到了问题,我已经在这里花了太多时间了。任何帮助表示赞赏。谢谢
`void main(){
Car myCar = Car(drive:slowDrive);
myCar.drive();
}
class Car{
Car({this.drive});
Function drive;
}
void slowDrive(){
print('Driving Slowly');
}
错误: 编译为 JavaScript 时出错: main.dart:32:13: 错误:可选参数 'drive' 应该有一个默认值,因为它的类型 'Function' 不允许空值。
- 'Function' 来自 'dart:core'。 汽车({this.drive}); ^^^^^ 错误:编译失败。
添加required
关键字:
void main(){
Car myCar = Car(drive:slowDrive);
myCar.drive();
}
class Car{
Car({required this.drive});
Function drive;
}
void slowDrive(){
print('Driving Slowly');
}
检查以下内容:
https://dart.dev/null-safety/understanding-null-safety#required-named-parameters
这会起作用,但不清楚您要实现的目标:
import 'package:flutter/material.dart';
void main(){
Car myCar = Car(drive: slowDrive);
myCar.drive.call();
}
class Car{
VoidCallback drive;
Car({this.drive});
}
void slowDrive(){
print('Driving Slowly');
}
错误:编译为 JavaScript 时出错:main.dart:32:13:错误:可选参数 'drive' 应该有一个默认值,因为它的类型 'Function' 没有不允许为空。
'Function' 来自 'dart:core'。汽车({this.drive}); ^^^^^ 错误:编译失败。
class Car{
Car({this.drive});
Function drive;
}
您编写它的方式({}
使参数可选),该值可以为 null,这就是它抱怨的原因,因为该函数永远不能为 null。
发生这种情况是因为新的 dart Null Safety 功能。
您需要添加 final 关键字并删除 {}
以便该值不可能为空。
class Car{
Car(this.drive);
final Function drive;
}
或者如 Peter 所说,添加 required 关键字,使其仍然使用可选语法,但它是必需的:
class Car{
Car({required this.drive});
final Function drive;
}
或添加默认函数:
class Car{
Car({this.drive = someFunction});
final Function drive;
}