Почему WillPopScope всегда отключает свайп назад?

#ios #flutter #navigation

#iOS #трепетать #навигация

Вопрос:

При нажатии на новый экран и желании отключить возможность прокрутки назад я нашел WillPopScope виджет.

 WillPopScope(  onWillPop: () async =gt; false,  child: lt;some childgt;  

тем не менее, это предотвращает свайп-жест независимо от того, вернусь я или нет true false . Можно ли сообщить этому виджету, что он может появляться в определенных состояниях экрана?

Так эффективно, что я бы:

 WillPopScope(  onWillPop: () async =gt; widget._canSwipeBack,  child: lt;some childgt;  

Прямо сейчас у меня есть добавить/не добавлять виджет в зависимости от состояния экрана, что кажется довольно странным.

Ответ №1:

Пожалуйста, обратитесь к приведенному ниже коду

Без обертывания виджета с помощью WillPopScope обычно его выполняет Navigator.pop(контекст);

 // disables swiping back WillPopScope( // disables swiping back or navigating back  onWillPop: () {}, child: Scaffold( body: Container(),  ), );    
 WillPopScope(  onWillPop: () {  // whenever you want to navigate back to specific route  Navigator.push(  context,  MaterialPageRoute(builder: (context) =gt; SecondRoute()),  );  },  child: Scaffold(  body: Container(),  ), );   
 WillPopScope(  onWillPop: () { // pop back  Navigator.pop(context);  }, child: Scaffold( body: Container(),  ), );