반응형
HomeScreen->RouteOneScreen으로 데이터 전달
데이터를 받을 화면(RouteOneScreen)에서
number을 외부에서 받을 수 있도록 named 파라미터로 설정
class RouteOneScreen extends StatelessWidget {
final int number;
const RouteOneScreen({required this.number, Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MainLayout(
title: 'RouteOne',
children: [
Text(
number.toString(),
textAlign: TextAlign.center,
),
ElevatedButton(
onPressed: (){
Navigator.of(context).pop();
},
child: Text('Pop')
),
]
);
}
}
데이터를 보낼 화면(HomeScreen)에서
Navigator.of(context).push()-MaterialPageRoute(builder: (BuildContext context) => RouteOneScreen(number: 123)
- 123을 RouteOneScreen으로 전달
class HomeScreen extends StatelessWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MainLayout(
title: 'HomeScreen',
children: [
ElevatedButton(
onPressed: (){
Navigator.of(context).push(
MaterialPageRoute(builder: (BuildContext context) => RouteOneScreen(
number: 123,
),
),
);
},
child: Text('Push'),
)
],
);
}
}
RouteOneScreen에서 다시 HomeScreen으로 데이터 전달
전환 화면에서 데이터를 받고
받은 데이터를 다시 가공하여(새로운 데이터를 보내든지) 이전 화면에 pop으로 보낼 수 있고
class RouteOneScreen extends StatelessWidget {
final int number;
const RouteOneScreen({required this.number, Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MainLayout(
title: 'RouteOne',
children: [
Text(
number.toString(),
textAlign: TextAlign.center,
),
ElevatedButton(
onPressed: (){
Navigator.of(context).pop(456);
},
child: Text('Pop')
),
]
);
}
}
다시 이전화면(HomeScreen)에서는 async로 await해서
class HomeScreen extends StatelessWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MainLayout(
title: 'HomeScreen',
children: [
ElevatedButton(
onPressed: () async {
final result = await Navigator.of(context).push(
MaterialPageRoute(builder: (BuildContext context) => RouteOneScreen(
number: 123,
),
),
);
print(result);
},
child: Text('Push'),
)
],
);
}
}
받을 수 있다.
반응형
'Flutter > Flutter 기본' 카테고리의 다른 글
[Flutter] 화면 전환, 데이터 전달3 (Named Route) (0) | 2023.05.12 |
---|---|
[Flutter] 화면 전환, 데이터 전달2 (argument) (0) | 2023.05.12 |
[Flutter] Button 종류와 설정 (0) | 2023.05.11 |
[Flutter] 코드 정리 (2) | 2023.05.01 |
[Flutter] 중복되는 코드 하나로 줄이기(.map)으로 (0) | 2023.04.21 |