2017-11-21 18 views
2

私は自分のモバイルアプリケーションにFlutterを使用しています。私は多くの画面を持っており、Navigatorを使っています。私は "名前付きルート"を使用したいと思いますが、私は次のルートに文字列以外のもの(画像など)も渡す必要があります。非文字列データをFlutterの名前付きルートに渡すにはどうすればよいですか?

pushNamed()は、文字列以外のデータを渡すことができないため使用できません。

名前付きルート+非文字列データの送信方法を教えてください。

答えて

4

名前付きルートは、原則として、自己説明とする必要があります。 pushNamed("/myRoute", myObject)のような操作はしないでください。代わりに、pushNamed("myRoute/${myObject.id}")のようなものを実行し、ルートパスからそのIDを抽出し、それを使用して必要なデータを要求する必要があります。

MaterialAppプロパティとして利用可能なonGenerateRouteが使用されます。ルートは/ myRoute/$ {} MYIDパス分割は、「」最初のものは空の文字列と、リスト内の3つの項目がある場合は

onGenerateRoute: (routeSettings) { 
    var path = routeSettings.name.split('/'); 
    if (path[0] == "myRoute") { 
     final foo = path.length > 1 ? int.parse(path[1]) : null; 
     return new MaterialPageRoute(
     builder: (context) => new MyPage(foo: foo), 
     settings: routeSettings, 
    ); 
    } 
    // fallback route here 
    }, 
+0

: あなたは、たとえば、このような何かを行うことができます。パス[0]を無視し、パス[1]とパス[2]を使用する必要がありますか? – Gogu

+0

代わりにルートの最初の '/'を削除します。しかし、これはほんの一例に過ぎず、あなたは何でもしたいことを自由に使うことができます。 – Darky

+0

真。私はちょうどこれを後で訪問した人々の利益のために問題について追加したいと思った。 – Gogu

関連する問題