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' 不允许空值。

添加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;
}