我有一个RaisedButtons的ListView,其中每个RaisedButton都像这样。每个RaisedButton的name变量都不同:

  new RaisedButton(
      onPressed: _navigateToRoute,
      child: new Text(name),
  ),

点击RaisedButton会调用_navigateToRoute():
  void _navigateToRoute() {
    Navigator.of(context).push(new MaterialPageRoute<Null>(
      builder: (BuildContext context) {
        return new Scaffold(
          body: new Text('A value with the word "Hello" should go here'),
        );
      },
    ));
  }

当点击特定的RaisedButton时(例如,假设我们点击ListView中的第一个RaisedButton,其中name = 'Hello'),我想将name变量传递给新路线。我怎么做?有没有一种方法可以将name存储在context变量中?我应该使用其他小部件代替RaisedButton吗?

我可以使用Named Navigator Route,但是我不想为ListView中的每个项目硬编码一条路线。

我找到了this Github issue,但不确定是否与我遇到的一样。

最佳答案

您可以将名称作为输入传递给onPressed函数。 IE。

  new RaisedButton(
      onPressed: () => _navigateToRoute(name),
      child: new Text(name),
  ),

函数签名将是:
  void _navigateToRoute(String name)

10-04 18:45