Детерминистично поведение при връщане назад

Определете една единствена политика за връщане назад, така че затварянето на оверлеи и изваждането на елементи от стека винаги да стават в един и същ ред.

Първо оверлеите

Затваряйте активните оверлеи, преди да изваждате страници от стека.

Съобразено с корена

Когато стекът има само един елемент, делегирайте на поведението на родителя вместо да го изваждате насилствено.

Съобразено с табовете

В режим на табове първо преминете към първия таб в корена, преди да задействате обработката на изхода на приложението.

Патърн на обхвата за връщане назад

Използвайте DeclarativePagesBackScope за стекове от страници и обратни извиквания на табовете за техните корени.

Политика за връщане назад

DeclarativePagesBackScope

return DeclarativePagesBackScope(
  pages: _pages,
  popTopPage: _popTop,
  isOverlayVisible: _overlay != null,
  dismissOverlay: _dismissOverlay,
  onBackAtRoot: _onBackAtRoot,
  child: DeclarativePagesNavigator(
    pages: _pages,
    buildPage: _buildPage,
    onPopTop: _popTop,
    canPopTop: () => _overlay == null,
  ),
);
UX стабилност

Запазете един и същ ред за всички събития за връщане назад за да избегнете объркване между системния back бутон на Android и жестовете в iOS.