Flutter로 되어있는 소스를 이어서 개선하다보니,
GetX가 없는 환경이더군요. 이미, 해당 소스에 초반부터 버전문제로 인해
골머리를 한번 썩혔던 참이라.. 섣불리 GetX를 적용하기보단 기존의 로직을
보완하는 방법으로 소스를 이어 나갔었는데요.
Navigator.of(context).pushNamed('/MainPage');
등 해당 페이지로 네이밍을 통한 라우팅을 해준다 했을때는 위젯에 선언되어있는
멤버변수에 값을 대입해줄 수가 없습니다. 아래와 같이 말이죠.
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => MainPage(useYn: 'Y'))
);
이럴때 우린 어떻게 GetX 없이 argument값을 멤버 변수에 대입을 시켜줄 수 있을까요?
Navigator.of(context).pushNamed('/MainPage', arguments: {
"useYn": "Y"
});
@override
Widget build(BuildContext context) {
final arguments = (ModalRoute.of(context)?.settings?.arguments ?? <String, dynamic>{}) as Map
if (arguments.isNotEmpty) {
widget.useYn = arguments["useYn"] ?? widget.useYn;
}
return Scaffold...
}
위와같은 방법으로, 위젯의 멤버변수에 값을 전달받아 대입해줄 수 있습니다.
솔직한 심정으로 저 또한 이러한 방법이 썩 마음에 들지는 않습니다.
하지만 어쩔 수 없이 위젯의 멤버변수를 통한 제어와 라우트 이동시 argument 전달이
불가피할땐 위와같은 방법을 이용하시면 될 것 같습니다.
감사합니다.
[Flutter] type 'null' is not a subtype of type 'string' in flutter (0) | 2023.03.16 |
---|---|
[Flutter] If - Null 체크를 간단하게 하는 방법 (0) | 2023.03.09 |
[Flutter] Mobile Web debug 방법 (0) | 2023.03.08 |
[Flutter]flutter_inappwebview alert 가 안 먹을때 (0) | 2023.03.07 |
[Flutter]There are multiple heroes that share the same tag within a subtree error resolved (0) | 2023.03.02 |