Skip to content

Instantly share code, notes, and snippets.

@SahajRana
Created July 18, 2020 12:25
Show Gist options
  • Save SahajRana/8e760e29f1313fc3b5b64666914a40f0 to your computer and use it in GitHub Desktop.
Save SahajRana/8e760e29f1313fc3b5b64666914a40f0 to your computer and use it in GitHub Desktop.
Flutter-Dart Extension Methods Example For Navigator History Fix.
///Implement below code outside globally.
List<Route> _historyBlupNavigator=List();
extension NavigatorExtension on Navigator {
@optionalTypeArgs
static Future<T> pushBlup<T extends Object>(BuildContext context, Route<T> route) {
print("pushCalled");
_historyBlupNavigator.add(route);
Navigator.of(context).push(route);
}
@optionalTypeArgs
static Future<T> popBlup<T extends Object>(BuildContext context) {
print("popCalled");
_historyBlupNavigator.removeLast();
Navigator.pop(context);
}
static List<Route> getHistoryList()=>_historyBlupNavigator;
static List<String> getHistoryRouteNameList(){
List<String> nameList=List();
for(Route route in _historyBlupNavigator){
nameList.add(route.settings.name);
}
return nameList;
}
}
///Then use it like this,
/*--Push--*/
home_page.NavigatorExtension.pushBlup(context,
MaterialPageRoute(builder: (context)=>
MyWidget(),
settings: RouteSettings(name: "/ClassName")
)
);
/*--Pop--*/
home_page.NavigatorExtension.popBlup(context);
/*--Get History List--*/
NavigatorExtension.getHistoryList();
/*--Get History Name List--*/
NavigatorExtension.getHistoryRouteNameList()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment