Flutter 如何使用 Lists 创建类似的 widget white implicit-case 和 implicity-dynamic 设置为 false

Flutter how to use Lists to create similar widgets white implicit-case and implicity-dynamic set to false

我正在努力更好地输入 flutter/dart。为了强制执行此操作,我制作了一个 analysis_options.yaml:

 analyzer:
  strong-mode:
    implicit-casts: false
    implicit-dynamic: false

效果很好,但我很难使用如下代码:

Widget build(BuildContext context) {

    return Column(
      children: [...widgetList()]);
  }

  widgetList(){
     List<Map<String,dynamic>> defineWidgets = [
      {"text":"beer", "color": Colors.blue}, // <-- Missing type arguments for map literal. Try adding an explicit type like 'dynamic' or enable implicit dynamic in your analysis options.
      {"text":"wine", "color": Colors.red},
    ];
    List<Widget> finalWidgets =[];
    for(int i = 0; i < defineWidgets.length; i++ ){
      finalWidgets.add(
        Expanded(child:Container(
          child:Text(defineWidgets[i]['text']), // <-- the argument type 'dynamic' can't be assigned to the parameter type 'String'
          color:defineWidgets[i]['color']
        ))
      );
    }
    return finalWidgets;
  }

我尝试使用 cast() 无济于事。 有没有办法在不将 implicit-casts 和 implicit-dynamic 设置为 true 的情况下执行此功能?

错误“缺少地图文字的类型参数。尝试添加显式类型,例如 'dynamic' 或在您的分析选项中启用隐式动态。”似乎要求您在 defineWidgets 的每个地图条目上投射 <String,dynamic>。尽管您提供的代码似乎在 DartPad 上运行良好。声明可能看起来类似于。

List<Map<String,dynamic>> pricing = [
  <String, dynamic>{"name":"beer", "price": 5},
  <String, dynamic>{"name":"wine", "price": 10},
];
  
for(Map<String,dynamic> product in pricing){
  print('${product['name']} Price: ${product['price']}');
}

至于Text(defineWidgets[i]['text']),Widget只能处理String值。但是由于我们从 Map<String, dynamic> 获取动态值,我们需要将该值转换为字符串,以便 Widget 知道该值确实是一个字符串。

`Text(defineWidgets[i]['text'] as String)`