inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

Navigator로 argument를 이용하여 map 객체를 넘겨서 쓰기

해결된 질문

373

code11

작성한 질문수 14

1

네비게이터를 공부하는 중에 

리스트나 맵 데이터를 넘겨서 출력해보려고 했습니다

일단 다섯개의 나이  이름 값이 들어있는 List<Map<String, String>> map이라는 데이터를 만들고

[

{

"age" : "23",

"name" : "jessi"

},

...

]

 

homescreen에 5개의 컨테이너를 만들어 map[0]['age'] 이런 형식으로 각 값을 출력하는데는 성공했습니다.

 

이제 

homescreen에서 secondpage로 map 데이터를 넘기려고 하는데

arguments에 해당 맵 데이터 ( map[0] )를 넘기면    _internalLinkedHashMap으로 타입이 바뀌어서 사용할수 없게됩니다.

그래서 이것을 다시 리스트 형태로 넘기려고 시도해봤습니다.

settings: RouteSettings(
arguments: [
{
'age' : '${viewList[0]['age']}',
'name' : '${viewList[0]['name']}',

}

]
)

//I/flutter ( 3333): [{age: 15, name: rabet}]
//I/flutter ( 3333): List<Map<String, String>>

 

이렇게하면 runtimetype도 List Map 으로 나와서 사용 가능할 줄 알았는데

키값을 기준으로 value를 출력하려고해도

Error: The operator '[]' isn't defined for the class 'Object?'.

 - 'Object' is from 'dart:core'.

이런 오류가 뜨면서 실행되지 않습니다.

 

 

arguments: [
{
'age' : '${viewList[0]['age']}',
'name' : '${viewList[0]['name']}',

}
].toList()

뒤에 리스트로 변환해 봤지만 증상은 같았습니다

아마 데이터가 넘어가면서 타입이 어떻게 바뀐것 같은데 ...

 

이런 데이터를 넘길때는 다른 방식을 써야할까요?

 

 

Flutter 클론코딩

답변 1

1

코드팩토리

안녕하세요.

arguments 파라미터를 다른 화면으로 넘길때는 arguments에 기본으로 Object 타입이 적용됩니다. 왜냐하면 push를 하기전에 어떤 타입이 넘어갈지 알 수 없기때문이죠.

final settings = ModalRoute.of(context)?.settings;

print((settings?.arguments as List<Map<String, dynamic>>)[0]['age'])

위처럼 타입을 한번 캐스팅해주고 작업하시면 문제가 없으실겁니다.

어려움이 있으시면 언제든 문의주세요!

0

code11

감사합니다. 타입을 바꿀떈 as 타입을 쓰는군요. 

0

코드팩토리

안녕하세요. as는 타입을 바꾸는게 아니라 "이 타입일거다"라고 가정하는겁니다! 실제로 런타임에 해당 타입이 아니면 에러가 납니다.

0

code11

그러면 런타임 타입도 정확히 파악해야겠군요 감사합니다.;>

LocationPermission.denied관련 질문입니다

0

598

1

videocontrollor dispose

0

443

1

onlogotap함수의 video nullable관련질문

0

398

1

setState 사용 차이

1

466

1

블로그 웹앱 배포 방법

0

524

1

sizedbox 위젯에 primary = RED_COLOR

1

436

1

개념 강의 순서 질문

0

414

1

materialstateProperty 다른 메소드관련질문

0

420

1

내 노트 모아보기

0

507

1

SafeArea (iPhone, Android)

0

411

1

web view 실행 안됩니다.

0

413

1

랜덤 숫자 생성기 프로젝트 관련

0

550

2

안도르이드 애뮬레이터 질문

0

390

1

super를 사용하는 건, 부모와 자식 클래스의 파라미터 이름이 꼭 같아야하나요?

0

480

1

선생님 flutter device를 크롬으로 했을때 http 통신이 안됩니다..

0

791

1

no element

0

447

1

암호화

0

242

1

책과 강의

0

394

1

voidcallback함수와 클래스내에 변수선언에 관한질문

0

481

1

android studio 세팅

0

492

1

오늘도 출근 세팅하기

2

567

1

재사용 클래스 임폴트 방법

0

492

1

가상화를 못하는 CPU인건가요? 확인 부탁드립니다.

0

406

1

flutter dispose 관련

0

1401

2