Точка входа в приложение:
void main() {
runWhat();}
void runWhat() async{
//getLoggedInSharedPrefs() gets logged in state from SharedPrefs
await getLoggedInSharedPrefs().then((isLoggedIn) {
if(isLoggedIn) {
runApp(Home()); // User is Logged in go to Home;
} else {
runApp(new MyApp()); // Login Screen - separate from Home
}
});
}
В Home
я хочу предупредить пользователя о нажатии назад и предупредить, если он хочет выйти из приложения.Но ни _onWillPop
, ни dispose
не будут вызваны
Домой не является отдельным экраном от MyApp и не является телом MyApp
class Home extends StatefulWidget {
@override
State<StatefulWidget> createState() {
HomeState homeState() => new HomeState();
return homeState();
}
}
class HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: _onWillPop,
child: new MaterialApp(.....
@override
void dispose() {
print('dispose: $this');
super.dispose();
}
Future<bool> _onWillPop() {
print("Poppoing Home on will popo");
return showDialog(
context: context,
builder: (context) => new AlertDialog(
title: new Text('Home - Are you sure?'),
content: new Text('Do you want to exit'),
actions: <Widget>[
new FlatButton(
onPressed: () => Navigator.pop(context),
child: new Text('No'),
),
new FlatButton(
onPressed: () => exit(0),
child: new Text('Yes'),
),
],
),
) ??
false;
}
... }