flutter app项目退出应用

app主页面实现以下代码: 
DateTime? _lastPressedAt; // 上次点击时间
// 退出app
Future exitApp() async {
  if (_lastPressedAt == null ||
      DateTime.now().difference(_lastPressedAt!) > Duration(seconds: 2)) {
    Fluttertoast.showToast(
        msg: "再按一次退出应用",
        backgroundColor: Colors.grey,
        toastLength: Toast.LENGTH_SHORT,
        fontSize: 14);
    //两次点击间隔超过2秒则重新计时
    _lastPressedAt = DateTime.now();
    return Future.value(false);
  }
  return Future.value(true);
  /*return showDialog(
      context: context,
      builder: (context) => new AlertDialog(
            content: new Text("是否退出"),
            actions: [
              new FlatButton(
                  onPressed: () => Navigator.of(context).pop(false),
                  child: new Text("取消")),
              new FlatButton(
                  onPressed: () {
                    Navigator.of(context).pop(true);
                  },
                  child: new Text("确定"))
            ],
          ));*/
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: WillPopScope(
      onWillPop: exitApp,///通过willpopScope拦截,实现原生类似效果
      child: PageView(
        physics: NeverScrollableScrollPhysics(),
        controller: _controller,
        children: [
          HomePage(),
          SearchPage(hideLeft: true),
          TravelPage(),
          MyPage()
        ],
      ),
    ),
    bottomNavigationBar: BottomNavigationBar(
      selectedFontSize: 12,
      unselectedFontSize: 12,
      selectedLabelStyle: TextStyle(color: _activeColor),
      unselectedLabelStyle: TextStyle(color: _defaultColor),
      currentIndex: _currentIndex,
      type: BottomNavigationBarType.fixed,
      onTap: (index) {
        _controller.jumpToPage(index);
        setState(() {
          _currentIndex = index;
        });
      },
      items: [
        _bottomItem(Icons.home, '首页', 0),
        _bottomItem(Icons.search, '搜索', 1),
        _bottomItem(Icons.camera_alt, '旅拍', 2),
        _bottomItem(Icons.account_circle, '我的', 3),
      ],
    ),
  );
}

你可能感兴趣的:(Flutter项目开发,flutter,java,开发语言)