import 'dart:ffi'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../page_a.dart'; import '../page_b.dart'; import '../page_c.dart'; import '../home_page.dart'; class AppRouterDelegate extends RouterDelegate with ChangeNotifier{ List _value = ['/']; List get value => _value; set value(List value){ _value = value; notifyListeners(); } @override Widget build(BuildContext context) { return Navigator( onPopPage: _onPopPage, pages: _value.map((e) => _pageMap[e]!).toList(), ); } final Map _pageMap = const { '/': MaterialPage(child: HomePage()), 'a': MaterialPage(child: PageA()), 'b': MaterialPage(child: PageB()), 'c': MaterialPage(child: PageC()), }; @override Future popRoute() async{ print('=======popRoute========='); return true; } bool _onPopPage(Route route, result) { value = List.of(_value)..removeLast(); return route.didPop(result); } @override Future setNewRoutePath(configuration) async{ } } // class AppRouterDelegate extends RouterDelegate with ChangeNotifier, PopNavigatorRouterDelegateMixin { // // List _value = ['/']; // // // List get value => _value; // // set value(List value){ // _value = value; // notifyListeners(); // } // // @override // Widget build(BuildContext context) { // return Navigator( // onPopPage: _onPopPage, // pages: _value.map((e) => _pageMap[e]!).toList(), // ); // } // // final Map _pageMap = const { // '/': MaterialPage(child: HomePage()), // 'a': MaterialPage(child: PageA()), // 'b': MaterialPage(child: PageB()), // 'c': MaterialPage(child: PageC()), // }; // // bool _onPopPage(Route route, result) { // _value = List.of(_value)..removeLast(); // notifyListeners(); // return route.didPop(result); // } // // @override // GlobalKey? navigatorKey = GlobalKey(); // // @override // Future setNewRoutePath(String configuration) async{ // } // }