下面的代码在迁移到 Flutter 2 和 null 安全性之前可以正常工作。我只是无法弄清楚正确的返回类型应该是什么。我得到的错误是:
The return type 'List<PopupMenuItem<dynamic>?>' isn't a 'List<PopupMenuEntry<dynamic>>', as required by the closure's context.
代码是:
Widget _parentMenuSelector() {
return PopupMenuButton<dynamic>(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Icon(Icons.content_copy),
Text('Copy to another menu'),
],
),
),
onSelected: (dynamic selectedMenu) {
Map<String, dynamic> selMenu = selectedMenu;
print(selMenu['id']);
model!.copyMenuItem(selMenu['id']);
},
itemBuilder: (BuildContext context) {
return model!.restaurant!.restaurantMenus!.values.map((dynamic item) { //ERROR
Map<String, dynamic> itemMap = item; //ERROR
if (itemMap['name'] != model!.menu!.name) { //ERROR
return PopupMenuItem<dynamic>( //ERROR
child: Text('Copy to ${itemMap['name']}'), //ERROR
value: item, //ERROR
); //ERROR
} //ERROR
}).toList(); //ERROR
},
);
}