Navigator.popNamedを使用して別のページに移動するときに、フラッターアプリでappBarに表示される戻るボタンを削除する方法を知っている人がいるかどうか、理由はわかりませんこの結果のページには、ナビゲーションから来て、ユーザーがセッションを開始するために代わりにログアウトボタンを使用してもらいたいということです。flutterはアプレットのボタンを外します
助けがあれば助かります。事前
でおかげ
Navigator.popNamedを使用して別のページに移動するときに、フラッターアプリでappBarに表示される戻るボタンを削除する方法を知っている人がいるかどうか、理由はわかりませんこの結果のページには、ナビゲーションから来て、ユーザーがセッションを開始するために代わりにログアウトボタンを使用してもらいたいということです。flutterはアプレットのボタンを外します
助けがあれば助かります。事前
でおかげ
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(),
},
);
}
}
アプリケーションバーの[戻る]ボタンを削除する簡単な方法は、falseにautomaticallyImplyLeadingを設定することです。
appBar: new AppBar(title: new Text("App Bar without Back Button", automaticallyImplyLeading: false,),
私は解決策は、あなたはどちらか実際には次
あると考えている:(:])、ひいてはために行く:
はその醜い戻るボタンを表示したくない AppBar(...,automaticallyImplyLeading: false,...)
;現在のビューを交換- -
は、ユーザーが戻って行きたくないので、ために行く: Navigator.pushReplacementNamed(## your routename here ##)
。 がバックスタックで特定のビューを置き換える - -
は、ユーザーが戻って行きたくないので、使用します。 Navigator.pushNamedAndRemoveUntil(## your routename here ##, f(Route<dynamic>)→bool);
fはあなたに残しておきたい最後のビューを満たしたときにtrue
を返す関数でありますスタック(新しいスタックの直前)。
Navigator.pushNamedAndRemoveUntil(## your routename here ##, (_) => false);
乾杯
いや、私は私の命令が混ざってました。私はそれを試してみましょう、あなたの助けをありがとう。 – Robert
@Collin、pushReplacementNamedは、システムのバック矢印で戻ってしまう可能性を排除していないようです。 – Jackpap