你好,我试图使null安全迁移,但有一个问题与
prefs.setStringList("save_list_autre2",save_list.toList());
错误是:参数list<String?>不能赋值给参数类型List
RegExp regExp = new RegExp(r'(...)');
var save_list= regExp.allMatches(decrypted).map((z) => z.group(0));
if(regExp.allMatches(decrypted)==null ){
[...]
} else {
prefs.setStringList("save_list_autre2",save_list.toList());
}
我从save_list= regExp.allMatches(decrypted).map((z) => z.group(0).toString());
中添加.toString()
错误被删除了,但我不知道这是否是好的解决方案
当您调用z.group(0)
时,如果没有给定索引的组(在这种情况下为0),group
方法可以返回null。所以dart认为你的字符串列表中可能有一些空值
实际情况是,不应该得到任何空值,因为传递的是0。因此,要告诉dart方法没有返回null,请使用!
操作符:
regExp.allMatches(decrypted)
.map((z) => z.group(0)!)
如果,偶然地,你碰巧有任何空值,这段代码将无法工作(正如我所说的,我相信你不会,但我知道什么?我从来没有在dart
中使用过正则表达式如果是这种情况,您首先需要过滤空值,然后使用!
:
regExp.allMatches(decrypted)
.map((z) => z.group(0))
.where((v) => v != null) // filter out null values
.map((v) => v!); // let dart know you don't have any null values.
希望这足以解决问题