Flutter报错:MaterialPageRoute无法赋值给Route<Map>类型参数求助
解决Flutter中“参数类型'MaterialPageRoute'无法赋值给参数类型'Route
嘿,这个问题我之前也碰到过,是Flutter版本更新后泛型类型检查更严格导致的!咱们来一步步搞定它:
问题根源
你调用Navigator.of(context).push()时,传入的MaterialPageRoute没指定泛型参数,但await期望接收的是Map类型的返回值。现在Flutter的类型系统要求Route的泛型必须和返回值类型完全匹配,所以就出现了类型不兼容的报错。
修改后的代码
只需要给MaterialPageRoute明确指定泛型为<Map>,让它和你期望的返回值类型对齐就行:
class Klimatic extends StatefulWidget { @override _KlimaticState createState() => new _KlimaticState(); } class _KlimaticState extends State<Klimatic> { String _cityEntered; Future _goToNextScreen(BuildContext context) async { Map results = await Navigator.of(context).push( new MaterialPageRoute<Map>( // 这里指定泛型为Map builder: (BuildContext context) { // 这里填写你跳转页面的代码,确保该页面返回的是Map类型数据 return YourNextScreen(); }, ), ); } }
额外提示
如果你的下一个页面返回的不是Map类型,记得同步调整MaterialPageRoute的泛型(比如MaterialPageRoute<String>),同时修改接收返回值的变量类型,保持前后类型一致。
内容的提问来源于stack exchange,提问作者Fagner Schuindt Caetano
相关产品推荐
相关产品推荐

