2017-08-28 63 views
0

在特定頁面上有沒有辦法停用Android後退按鈕?停用Flutter App中的系統後退按鈕(幼兒導航)

class WakeUpApp extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new MaterialApp(
     title: "Time To Wake Up ?", 
     home: new WakeUpHome(), 
     routes: <String, WidgetBuilder>{ 
     '/pageOne': (BuildContext context) => new pageOne(), 
     '/pageTwo': (BuildContext context) => new pageTwo(), 
     }, 
    ); 
    } 
} 

在PAGEONE我有一個按鈕去pageTwo:

new FloatingActionButton(
    onPressed:() {  
    Navigator.of(context).pushNamed('/pageTwo'); 
    }, 
) 

我的問題是,如果我按後退箭頭在Android的屏幕的底部,我回去PAGEONE。我希望這個按鈕根本不顯示。 理想情況下,除非用戶舉例說明他的手指在屏幕上保持5秒鐘,否則我希望沒有任何可行的方法。 (我正在爲幼兒編寫一個應用程序,並且希望只有父母能夠瀏覽特定屏幕)。

回答

4

答案是WillPopScope。它將防止系統彈出頁面。您仍然可以使用Navigator.of(上下文).pop()

@override 
Widget build(BuildContext context) { 
    return new WillPopScope(
    onWillPop:() async => false, 
    child: new Scaffold(
     appBar: new AppBar(
     title: new Text("data"), 
     leading: new IconButton(
      icon: new Icon(Icons.ac_unit), 
      onPressed:() => Navigator.of(context).pop(), 
     ), 
    ), 
    ), 
); 
} 
0

您應該使用方法popAndPushNamed而不是pushNamed。它彈出當前路線並推送所需的路線。

話雖這麼說,你的FAB的代碼看起來應該是這樣

+0

這對我不起作用。我已經嘗試過,但Android後退箭頭仍然使我回到第一頁。 – Jackpap