Navigator.pushNamed
を使用して別のページに移動したときに、フラッターアプリのappBar
に表示される[戻る]ボタンを削除する方法を知っている人がいるのだろうかと思います。この結果ページに表示したくないのは、ナビゲーションから来ているため、ユーザーがlogout
ボタンを使用してセッションをやり直すようにするためです。
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(),
},
);
}
}
AppBarの戻るボタンを削除する簡単な方法は、automaticallyImplyLeading
をfalse
に設定することです。
appBar: AppBar(
title: Text("App Bar without Back Button"),
automaticallyImplyLeading: false,
),
@Jackpapの答えに説明を追加したいだけです。
automaticallyImplyLeading:
これにより、アプリバーに戻るウィジェット(先頭ウィジェット)を適用するかどうかがチェックされます。 automaticImplyLeadingがfalseの場合、タイトルに自動的にスペースが与えられ、先頭のウィジェットがtrueの場合、このパラメーターは効果がありません。
void main() {
runApp(
new MaterialApp(
home: new Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false, // Used for removing back buttoon.
title: new Center(
child: new Text("Demo App"),
),
),
body: new Container(
child: new Center(
child: Text("Hello world!"),
),
),
),
),
);
}