import 'package:flutter/material.dart'; import 'dart:async'; void main() => runApp(new BackButtonOverrideDemoWidget()); class BackButtonOverrideDemoWidget extends StatefulWidget{ @override _BackButtonOverrideDemoWidgetState createState() => new _BackButtonOverrideDemoWidgetState(); } class _BackButtonOverrideDemoWidgetState extends State with WidgetsBindingObserver{ //-------------------------Test Variable bool isBackButtonActivated = false; //-------------------------Required For WidgetsBindingObserver @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); } @override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } //-------------------------Function That Triggers when you hit the back key @override didPopRoute(){ bool override; if(isBackButtonActivated) override = false; else override = true; return new Future.value(override); } //-------------------------Build Method @override Widget build(BuildContext context) { return new Directionality( textDirection: TextDirection.ltr, child: new Container( color: (isBackButtonActivated) ? Colors.green : Colors.red, child: new Center( child: new FlatButton( color: Colors.white, onPressed: () { isBackButtonActivated = !isBackButtonActivated; setState(() {}); }, child: (isBackButtonActivated) ? new Text("DeActive the Back Button") : new Text("Activate the Back Button"), ) ) ), ); } }