как только я нажму на любую ссылку, «сдвинуть дважды, чтобы выйти из приложения» станет бесполезным - PullRequest
0 голосов
/ 26 мая 2019
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'package:fluttertoast/fluttertoast.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) :super(key: key);
  final String title;
  @override
  State<StatefulWidget> createState() => new _HomePageState();
}

class _HomePageState extends State<MyHomePage> {
  DateTime _lastPressedAt;

  FlutterWebviewPlugin flutterWebviewPlugin = FlutterWebviewPlugin();
  Future<bool> _onWillPop() {
    return showDialog(
      context: context,
      builder: (context) =>
      new AlertDialog(
        title: new Text('tip'),
        content: new Text('sure?'),
        actions: <Widget>[
          new FlatButton(
            onPressed: () => Navigator.of(context).pop(false),
            child: new Text('no'),
          ),
          new FlatButton(
            onPressed: () => Navigator.of(context).pop(true),
            child: new Text('yes'),
          ),
        ],
      ),
    ) ?? false;
  }



  @override
  Widget build(BuildContext context) {
    return new WillPopScope(

      onWillPop: () async {
        if (_lastPressedAt == null ||
          DateTime.now().difference(_lastPressedAt) > Duration(seconds: 1)) {
          Fluttertoast.showToast(
            fontSize: 12.0,
            msg: "one more time to exit",
            toastLength: Toast.LENGTH_SHORT,
            timeInSecForIos: 1,
            gravity: ToastGravity.CENTER,
          );

          _lastPressedAt = DateTime.now();
          return false;
        }
        return true;
      },
      child:new WebviewScaffold(
        appBar: new AppBar(
          title: new Text("google"),
        ),
        url: "https://www.google.com/",

      ),
    );
  }
}

Кажется, это работает нормально, но у вас остается одна проблема: как только я нажимаю любую ссылку, как "https://www.google.com/doodles/", тогда функция, которая скользит дважды для выхода из приложения, станет бесполезной. как это исправить?

Я думаю, это потому, что функция возврата Android конфликтует с функцией, которая перемещается на страницу вперед или назад внутри плагина webview. тогда как отключить внутреннюю функцию вручную?

...