hoony's web study

728x90
반응형

Flutter 변수 전달


- 개요

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 전달이

 

불가피할땐 위와같은 방법을 이용하시면 될 것 같습니다.

 

감사합니다.

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading