首页 > 解决方案 > Dart - “bool”类型的值不能分配给“bool”类型的变量

问题描述

将以下内容粘贴到dartPad.dev中会导致分配错误classtwoInstance.fieldOne = arg;

错误:“bool”类型的值不能分配给“bool”类型的变量

转换为 bool 也会给出“不必要的转换”消息

如何将 bool 参数arg分配给 fieldOne?

class ClassOne {
     Function<T>(T) setFunction;
  
     ClassOne({this.setFunction});
}

class ClassTwo {
    bool fieldOne;
}


testFunction<T>(T value){
    ClassTwo classtwoInstance = ClassTwo();
    ClassOne classOneInstance = ClassOne(setFunction: <bool>(bool arg) {
    classtwoInstance.fieldOne = arg; // Error A value of type 'bool' can't be assigned to a variable of type 'bool'
       return null;
    });
  
   return classOneInstance;
}


void main() {

ClassOne classWithFunction = testFunction<bool>(true);
   classWithFunction.setFunction(true);
}

标签: flutterdartgenerics

解决方案


由于您在 上使用泛型类型Function<T>(T) setFunction,因此编译器在将其设置为 bool in 时会感到困惑testFunction()。您可以在这里做的是将数据类型更改为泛型,然后arg在设置为时使用 bool 进行转换cassTwoInstance.fieldOne

这是您可以在dartpad.dev上尝试的更新代码

class ClassOne {
  Function<T>(T) setFunction;

  ClassOne({required this.setFunction});
}

class ClassTwo {
  bool? fieldOne;
}

testFunction<T>(T value) {
  ClassTwo cassTwoInstance = ClassTwo();
  ClassOne classOneInstance = ClassOne(setFunction: <T>(T arg) {
    cassTwoInstance.fieldOne = arg as bool; 
    print('ClassTwo fieldOne: ${cassTwoInstance.fieldOne}');
    return null;
  });

  return classOneInstance;
}

void main() {
  ClassOne classWithFunction = testFunction<bool>(false);
  classWithFunction.setFunction(false);
}

推荐阅读