2017-10-02 4 views
0

私はRaisedButtonsのListViewを持っています。RaisedButtonはこのように見えます。 name変数は各RaisedButtonに異なるです:FlutterのRaisedButtonで値を渡したりバインドする方法はありますか?

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

をタップRaisedButtonは_navigateToRoute()を呼び出します:特定RaisedButtonがタップされ

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をタップしましょう、name = 'Hello')、新しいルートにname変数を渡したいと思います。それ、どうやったら出来るの?変数nameを変数contextに保存する方法はありますか? RaisedButtonの代わりに別のウィジェットを使うべきですか?

私はNamed Navigator Routeを使うことができましたが、私のListViewの各項目のルートをハードコードしたくありません。

私はthis Github issueを見つけました。私が遭遇したのと同じものかどうかはわかりません。

答えて

1

名前を入力としてonPressed関数に渡すことができます。私。

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

関数のシグネチャは次のようになります。

void _navigateToRoute(String name) 
0

あなただけのメソッドに任意の変数を渡すことができます限り、あなたが受け取ることができるようにあなたの方法を定義するよう

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

変数。あなたはその変数で今までに何をしたいことができるのです。

void _navigateToRoute(String name) { 
    Navigator.of(context).push(new MaterialPageRoute<Null>(
    builder: (BuildContext context) { 
     return new Scaffold(
     body: new Text(name), 
    ); 
    }, 
)); 
} 

あなたも、あなたのクラス階層でさらに下にそれを渡すことができます。

void _navigateToRoute(String name) { 
    Navigator.of(context).push(new MaterialPageRoute<Null>(
    builder: (BuildContext context) { 
     return new MyNewPage(name); 
    }, 
)); 
} 

class MyNewPage extends StatelessWidget { 
    String name; 
    MyNewPage(this.name); 

    ...rest of the widget code 
} 
関連する問題