0
Page1
페이지가 나타날 때마다 name()
함수가 실행되도록하려면 어떻게해야합니까? 코드에서 Flutter - 페이지가 나타나면 항상 함수를 실행하십시오.
Page2
에 가기 전에 내가 뒤로 버튼이나 기능
name()
가 실행되지 안드로이드의 물리적 버튼을 클릭하면 내가
Page2
내부에 이미
dispose()
실행,하지만 난
'go to Page1'
버튼을 클릭하면 기능
name()
입니다 실행.
Page1
이 나타나면 항상 name()
기능을 실행할 수 있습니까?
import 'package:flutter/material.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new MyHomePage(),
routes: <String, WidgetBuilder> {
'/page2': (BuildContext context) => new Page2(),
},
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String nameScreen;
String name() {
return 'foo1';
}
@override
void initState() {
super.initState();
this.nameScreen = name();
}
@override
void dispose() {
this.nameScreen = '';
super.dispose();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Page 1'),
backgroundColor: new Color(0xFF26C6DA),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new RaisedButton(
child: const Text('go to Page2'),
onPressed:() async {
dispose();
bool isLoggedIn = await Navigator.of(context).pushNamed('/page2');
if (isLoggedIn) {
setState((){
this.nameScreen = name();
});
}
},
),
new Text(
'$nameScreen',
),
],
),
),
);
}
}
class Page2 extends StatelessWidget{
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Page 2'),
backgroundColor: new Color(0xFFE57373)
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new RaisedButton(
child: const Text('go back to Page1'),
onPressed:() {
Navigator.pop(context, true);
}
),
],
),
),
);
}
}
@azira 감사 당신의 도움을 위해, 단지가 작동하지 않습니다. 이 문제를 해결할 방법이 있습니까? – rafaelcb21
문제를 해결하는 한 가지 방법은 사용자가 실제 Android 버튼을 사용하는 경우'setState' 맨 위에'if (result == null) {result = "Android back button";}'을 추가하는 것입니다. – rafaelcb21