错误:参数类型&#39; MaterialPageRoute&#39;无法分配到参数类型&#39;路线<地图>&#39;

时间:2018-04-18 15:19:58

标签: android-studio dart flutter

我正在学习扑克,这段代码直接来自老师。我知道这种情况一直在变化,这可能就是它没有运行的原因。无论如何它是:

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<dynamic>(builder: (BuildContext context) {
      return new ChangeCity();
    }));

    if ( results != null && results.containsKey('enter')) {
       _cityEntered = results['enter'];

//      debugPrint("From First screen" + results['enter'].toString());


    }
  }

2 个答案:

答案 0 :(得分:2)

如果不了解确切的API详细信息,看起来您期望有Route<Map>类型,但您创建的是Route<dynamic>(或MaterialPageRoute<dynamic>)。我假设你可以试试:

new MaterialPageRoute<Map>(...)

......而不是。

答案 1 :(得分:0)

这是因为当前的Flutter拒绝了dynamic的{​​{1}}的参数类型。

您需要更改以下代码:

MaterialPageRoute

Map results = await Navigator
    .of(context)
    .push(new MaterialPageRoute<dynamic>(builder: (BuildContext context) {
  return new ChangeCity();
}));

从以上更改可以看到,您不需要Map results = await Navigator.of(context) .push(MaterialPageRoute(builder: (BuildContext context) { return ChangeCity(); }) ); 关键字。并且不再需要dynamic关键字,因为它现在是可选的。