반응형
화면 이동하는 걸 전 포스팅에서 다뤘다.
그러면 이동간 데이터 전달은 어떻게 할까?
우선 해당 위젯에 대한 생성자에 파라미터를 추가해주고 넘기면 된다.
1. push , pop의 경우 값을 넘겨주기
단순 값. 전송부
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) => Scene2(),
settings: RouteSettings(arguments: '전송한 데이터'),
),
);
단순 값 수신부
@override
Widget build(BuildContext context) {
final arguments = ModalRoute.of(context)!.settings.arguments;
print(arguments);
객체 전송부
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) => Scene2(),
settings: RouteSettings(arguments: Person('id_test','name-smith')),
),
);
객체 수신부
@override
Widget build(BuildContext context) {
Person arguments = ModalRoute.of(context)!.settings.arguments as Person;
print(arguments.id);
print(arguments.name);
라우터 이동시에 데이터 전달
GestureDetector(
onTap: (){
Navigator.pushNamed(context, '/second',
arguments: Person('gd','smith'),
);
라우터 이동 시에 데이터 수신
Person arguments = ModalRoute.of(context)!.settings.arguments as Person;
print(arguments.id);
print(arguments.name);
여러개 데이터 발,수신
GestureDetector(
onTap: (){
Navigator.pushNamed(context, '/second',
arguments: [Person('gd','smith'),Person('gd2','smith2')],
@override
Widget build(BuildContext context) {
List<Person> arguments = ModalRoute.of(context)!.settings.arguments as List<Person>;
print(arguments.length);
print(arguments[0].id);
print(arguments[1].id);
이런식으로 하면 서버를 굳이 여러번 찌르지않아도,
데이터 전달이 화면 간 가능하다.
반응형
'[Mobile] > [Flutter]' 카테고리의 다른 글
[Flutter] 동적 리스트뷰 생성하기 (0) | 2023.07.16 |
---|---|
[Flutter] 정적 리스트뷰 (0) | 2023.07.15 |
[Flutter] 플러터 화면 이동 (0) | 2023.07.15 |
[Flutter] assets에 추가하고 IOS 빌드에 추가 (0) | 2023.07.15 |
[Flutter] 피그마로 레이아웃 잡고 소스뽑기 (0) | 2023.07.15 |