Skip to content

Instantly share code, notes, and snippets.

@b-cancel
Last active November 29, 2021 19:41
Show Gist options
  • Select an option

  • Save b-cancel/0ca372017a25f0c120b14dfca3591aa5 to your computer and use it in GitHub Desktop.

Select an option

Save b-cancel/0ca372017a25f0c120b14dfca3591aa5 to your computer and use it in GitHub Desktop.

Revisions

  1. b-cancel revised this gist Jul 3, 2018. No changes.
  2. b-cancel created this gist Jun 13, 2018.
    66 changes: 66 additions & 0 deletions main.dart
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,66 @@
    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<BackButtonOverrideDemoWidget> 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<bool>.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"),
    )
    )
    ),
    );
    }
    }