2017-08-06 18 views
0

クラスナビゲーターを理解しようとしています。フラッター:TabBarとTabBarViewでナビゲーターを使用

ナビゲータルートは常に新しいウィジェットを返しますが、TabBarTabBarViewを管理して、タップまたはスワイプしたときに各タブがナビゲータスタックにプッシュされるようにするにはどうすればよいですか?それをする。

もっと一般的なケースでは、新しいウィジェットを作成せずにルート変更に反応することはできますか?代わりに、listViewの特定の項目にスクロールするなどの別の操作を行いますか?

毎回アプリの構造全体を再作成しようとしましたが、このようにしても素敵なデフォルトのアニメーションがなく、また私にとっては良いアプローチではありません。

+1

ようこそ!タブバのビューをスタックにプッシュする具体的な使用例は何ですか?通常、タブバーがあり、タブ内の各ビューは独自のスタックを持つナビゲーションコントローラになります。これは、通常、タブの各ビューに別々のユーザーフロー(Think Spotify - 検索、プロファイルなど)があり、それらのすべてが同じナビゲーションスタックに集められると悪いユーザーエクスペリエンスになるためです。 – crashlog

+0

TabControllerで変更するタブを確認できます。 – najeira

答えて

0

WillPopScopeウィジェットとそのonWillPopを使用して、戻るボタンの圧力を受け取り、自分で処理することができます。新しいウィジェットを作成 ではなく、リストビューに 特定の項目にスクロールのような別の行動をとることなく、ここにhttps://docs.flutter.io/flutter/widgets/WillPopScope-class.html

より一般的な場合、私はルート変更に反応することができます詳細検索?

これは一般的ではなくより具体的に見えます。ただし、ListViewScrollControllerを設定し、リストを目的のポイントまでスクロールさせる必要があります。トップに戻る簡単な例機能:詳細や行動のための

class MyFancyClass extends StatelessWidget{ 
... 
ScrollController _scrollController; 
... 
@override 
Widget build(BuildContext Context){ 
    return .... 
    new ListView(
    ... 
    controller: _scrollController, 
    ... 
} 

void _toTop() { 
    _scrollController.animateTo(
    0.0, 
    duration: const Duration(milliseconds: 500), 
    curve: Curves.ease, 
); 
} 

チェックhttps://docs.flutter.io/flutter/widgets/ScrollController-class.html

Widget build(BuildContext context) { 
    return new WillPopScope(
    onWillPop: _onTop, 
    child: 
     ... 
    ), 
); 
} 

より良いあなたはあなたの心に持っているものを実装する方法を理解するためにhttps://docs.flutter.io/flutter/material/TabController-class.htmlを読むために、私はあなたを示唆タブの挙動に関して:ケースでは、戻るボタンがトップにあなたを持って帰りたいと思います。

関連する問題