如何使用变量作为方法名称

How to use a variable for method name

我想使用一个变量来访问我的配置单元数据库中的某个值: 在下面的代码中,如果我使用 myBox.getAt(i).attributeSelect 我会得到一个错误,因为没有为框定义 attributeSelect。 如果我使用 myBox.getAt(i).test 它有效。我怎样才能让 flutter 识别出 attributeSelect 是一个变量并将值放在那里?我总共有 181 个不同的变量可供用户选择。我真的需要那么多 if 子句吗?变量是布尔值。所以我想检查索引 i 处的文档的该属性是否为真。

错误:NoSuchMethodError:'attributeSelect' 找不到方法 接收者:'HiveDocMod'

的实例
attributeSelect = 'test'; //value depends on user choice
Future<void> queryHiveDocs() async {
    final myBox = await Hive.openBox('my');
    for (var i = 0; i < myBox.length; i++) {
      if (attributeSelect == 'All Documents') {
        _hiveDocs.add(myBox.getAt(i)); // get all documents
        //print(myBox.getAt(24).vesselId);
      } else {
        // Query for attribute
        if (myBox.getAt(i).attributeSelect) {
          _hiveDocs.add(myBox.getAt(i)); // get only docs where the attributeSelect is true
        }
      }
    }
    setState(() {
      _hiveDocs = _hiveDocs;
      _isLoading = false;
    });
  }

我用烦人的方式解决了它:

            if (attributeSelect == 'crsAirCompressor') {
              if (myBox.getAt(i).crsAirCompressor) {
                _hiveDocs.add(myBox.getAt(i));
              }
            } else if (attributeSelect == 'crsBatteries') {
              if (myBox.getAt(i).crsBatteries) {
                _hiveDocs.add(myBox.getAt(i));
              }...