問題タブ [flutter-navigation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2090 参照

ios - Flutter の Cupertino ウィジェットを使用して、下部のタブ バーの上で水平方向のページ遷移をトリガーするにはどうすればよいですか

タブの 1 つの内側にある一般的な水平方向のページ遷移や、タブ バーの上にある一般的な垂直方向のページ遷移の代わりに、水平方向とタブ バーの上にページ遷移を挿入するにはどうすればよいですか?

これは、中国のプラットフォーム タイプのアプリでよく見られます。

ここに画像の説明を入力

0 投票する
1 に答える
1347 参照

flutter - Flutter inheritFromWidgetOfExactType() メソッド

2つの画面があるとしましょう。スクリーンワンとスクリーンツー。ScreenOne には、押すと ScreenTwo (Navigator.push) に移動するボタンがあります。ここまでは順調ですね。

また、ScreenTwo には戻るボタンがあり、このボタンの目的は ScreenOne (Navigator.pop) に戻ることです。しかし、このボタンを押すと、次のエラーが表示されます。

未処理の例外: 非アクティブ化されたウィジェットの祖先を検索することは安全ではありません。この時点で、ウィジェットの要素ツリーの状態は安定していません。dispose() メソッドでウィジェットの祖先を安全に参照するには、ウィジェットの didChangeDependencies() メソッドで inheritFromWidgetOfExactType() を呼び出して、祖先への参照を保存します。

この問題を解決するにはどうすればよいですか?

0 投票する
2 に答える
1051 参照

dart - Youtube や Instagram アプリのようなナビゲーション スタックを実装する方法は?

ボトム ナビゲーション バーを使用する Flutter でアプリを作成しようとしています。YouTube や Instagram アプリのように、以前にアクセスした画面をナビゲーション スタックに保持したい。たとえば、3 つの異なる下部ナビゲーション バー (A、B、C) があるとします。タブA、B、Cをそれぞれクリックした後、それぞれC、B、Aに戻りたいです。

これが私の主な目標ですが、実装できるかどうかという副次的な目標があります。

Instagram や Youtube で、A -> B -> C -> B -> C の順にタブをクリックすると (今はタブ C にいます)、その後、戻るボタンをクリックし始めると、C -> B に戻ります。 -> タブ。基本的に、各タブはナビゲーション スタックに 1 回配置できます。同じタブに複数回アクセスすると、同じタブの前の画面がナビゲーション スタックから削除されます。

この問題の解決策を 2 日間探していますが、見つかりませんでした。alibaba 開発者によって作成されたflutter-go アプリもテストしましたが、クリックして戻るボタンのアプリが閉じているだけです。

この問題について何か助けていただければ幸いです。

0 投票する
1 に答える
1648 参照

flutter - MaterialPageRoute をインストールできません処分してから

セットアップ

単純なルートにする必要がFirstRouteあり、SecondRoute. それぞれに、ナビゲーション用のボタンが含まれています。のボタンを押すとFirstRoute秒につながり、その逆も同様です。

例外

FirstRouteからに2 回目SecondRouteに移動しようとすると、例外が発生します(最初の試行は成功します)。「破棄した後に MaterialPageRoute をインストールできません」というメッセージから判断すると、どういうわけかルートを破棄しましたが、どのルートとどのようにそれを行ったのかわかりません。

完全なエラー ログは次のとおりです。

誰かがエラーを再現したい場合のコード全体を次に示します。

0 投票する
0 に答える
119 参照

flutter - 画面をスタックにプッシュせずにルートをナビゲーション スタックに追加する

ナビゲーション スタックにいくつか追加したいroutesのですが、それらの画面をプッシュしたくありません。flutterナビゲーションでスタックを与えることは可能ですか?

たとえば、3 つの画面があります。ABおよびC

  • したがって、直接画面に移動したいのですがC、戻るボタンで に移動し、戻るボタンで に移動するC必要があります。BBA

こんなことはしたくない――

Cこれらの画面をプッシュせずに、残りの 2 つのルートをスタックにプッシュして保持したいだけです。

0 投票する
1 に答える
1649 参照

dart - ナビゲーターで同じ画面を複数回押す

アプリの起動時に新しい画面を自動的にプッシュする必要があります(ユーザーがログインまたはサインアウトしている場合)。

私はscoped_model認証に使用しているため、ユーザーの値がモデルで変更されたときにナビゲートする必要があります。

私はここでブライアン・イーガンの提案に従います: https://github.com/brianegan/scoped_model/issues/43#issuecomment-442444143

AuthStatusですEnum。で値を変更しますModel

これは正しいプッシュ ルートですが、問題があります。

同じルートが何度もプッシュされます。たとえば、同じログイン ページが 5 回以上プッシュされます。

ナビゲーターが同じ画面を複数回押すのを止めるには?

ありがとう!

0 投票する
0 に答える
25 参照

flutter - Flutter Navigator がスタックにプッシュされない

Flutter のナビゲーションで奇妙な問題が発生しています。

名前付きルートを使用しています。このため、私はメソッドを提供してNavigatoronGenerateRouteます:

これが私のものonGenerateRouteです:

ここで、ルートに着陸するアプリケーションを開始し、ROOT次を使用して「PAGE_1」に移動するとします。

次に、次を使用して MyPage2 に移動します。

これが問題です。

MyPage2にプッシュされることを期待しているMyPage1ため、次のウィジェット ツリーが生成されます。

しかし、代わりに、私はこれを取得します:

私は何が欠けていますか?

前もって感謝します!

0 投票する
1 に答える
576 参照

dart - 初めてクリックした後にボタンを無効にする方法

初めてクリックした後にボタンを無効にする方法は?

ここに画像の説明を入力

0 投票する
0 に答える
917 参照

flutter - Cupertino タブを切り替えるときにナビゲーターをリセットする方法

Flutter でマルチページ アプリをセットアップしようとしています。下部のタブバーには、[その他] ボタンを含む、最もよく使用される 4 つのページが含まれています。詳細ボタンは、他のページへのリンクを含むページを表示します。ページをクリックすると、このページが「その他」ページに置き換わるため、新しいナビゲーション スタックが作成されます。ただし、別のタブに切り替えてから「詳細」タブに戻ると、ナビゲーションの状態が記憶されます。これは、「その他」ページではなく、タブを切り替えたときに残したページが表示されていることを意味します。ユーザーが「その他」タブをクリックするたびに「その他」ページを表示したい。

Navigator の pushReplacement メソッドを使用してみました。そのため、ユーザーが詳細ページをクリックすると、詳細ページのリストに戻ることができません。ただし、タブを切り替えると、more ページが置き換えられるため、表示されなくなりました。

また、タブのコールバック メソッドを調整して、すべてのビューをポップし、ナビゲーターを MoreScreen に戻すことも試みました。ただし、これにより、コンソールにエラーが表示されました: setState() or markNeedsBuild() called during build..

タブ画面:

そして、別のページに移動するためのボタンを保持する MoreScreen:

タブを切り替えるたびにナビゲーションスタックがリセットされることを期待していますが、次を使用して手動で行う必要があります。

Navigator.of(context).popUntil((route) => route.isFirst);

これにより、次のエラー メッセージが表示setState() or markNeedsBuild() called during build.されます。タブに新しいページをプッシュしてからタブを切り替えた後。

0 投票する
1 に答える
1408 参照

flutter - 複数のウィジェットが同じ GlobalKey を使用していました。フラッター

別のウィジェット内の Button を使用して TitledBottomNavigationBar アイテムをタップしたいと思います。
ナビゲーションバーのキーのみを使用していますが、まだ使用していると表示されていますMultiple widgets used the same GlobalKey.

エラーがスローされます: