2017-07-07 7 views
3

Navigator.popNamedを使用して別のページに移動するときに、フラッターアプリでappBarに表示される戻るボタンを削除する方法を知っている人がいるかどうか、理由はわかりませんこの結果のページには、ナビゲーションから来て、ユーザーがセッションを開始するために代わりにログアウトボタンを使用してもらいたいということです。flutterはアプレットのボタンを外します

助けがあれば助かります。事前

おかげ

答えて

6

popNamedと呼ばれる方法はありません。私はあなたがpushNamedを意味すると仮定します。

空のnew Container()leading引数としてAppBarに渡すことで、戻るボタンを削除できます。

しかし、あなたがこれをやっていると思われる場合は、ユーザーがデバイスの戻るボタンを押して以前のルートに戻ることを望んでいない可能性があります。 pushNamedを呼び出す代わりに、Navigator.pushReplacementNamedに電話をかけて、以前のルートが消えるようにしてください。

後者のアプローチの完全なコードサンプルは以下のとおりです。

import 'package:flutter/material.dart'; 

class LogoutPage extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(
     title: new Text("Logout Page"), 
    ), 
     body: new Center(
     child: new Text('You have been logged out'), 
    ), 
    ); 
    } 

} 
class MyHomePage extends StatelessWidget { 

    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(
     title: new Text("Remove Back Button"), 
    ), 
     floatingActionButton: new FloatingActionButton(
     child: new Icon(Icons.fullscreen_exit), 
     onPressed:() { 
      Navigator.pushReplacementNamed(context, "/logout"); 
     }, 
    ), 
    ); 
    } 
} 

void main() { 
    runApp(new MyApp()); 
} 

class MyApp extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new MaterialApp(
     title: 'Flutter Demo', 
     home: new MyHomePage(), 
     routes: { 
     "/logout": (_) => new LogoutPage(), 
     }, 
    ); 
    } 
} 
+0

いや、私は私の命令が混ざってました。私はそれを試してみましょう、あなたの助けをありがとう。 – Robert

+0

@Collin、pushReplacementNamedは、システムのバック矢印で戻ってしまう可能性を排除していないようです。 – Jackpap

1

アプリケーションバーの[戻る]ボタンを削除する簡単な方法は、falseにautomaticallyImplyLeadingを設定することです。

appBar: new AppBar(title: new Text("App Bar without Back Button", automaticallyImplyLeading: false,), 
1

私は解決策は、あなたはどちらか実際には次

あると考えている:(:])、ひいてはために行く:

  • はその醜い戻るボタンを表示したくない AppBar(...,automaticallyImplyLeading: false,...);現在のビューを交換- -

  • は、ユーザーが戻って行きたくないので、ために行く: Navigator.pushReplacementNamed(## your routename here ##)がバックスタックで特定のビューを置き換える - -

  • は、ユーザーが戻って行きたくないので、使用します。 Navigator.pushNamedAndRemoveUntil(## your routename here ##, f(Route<dynamic>)→bool); fはあなたに残しておきたい最後のビューを満たしたときにtrueを返す関数でありますスタック(新しいスタックの直前)。

  • は、ユーザーが戻って行きたくない - EVER - で完全にナビゲータースタックを空にする: Navigator.pushNamedAndRemoveUntil(## your routename here ##, (_) => false);

乾杯

関連する問題