-
[Flutter]플러터(MediaQuery 로딩 )|안드로이드, IOSFlutter_끄적끄적 2021. 11. 23. 03:32반응형
- 내용
MediaQuery는 해당 디바이스의 크기를 확인 해준다
안드로이드 종류 마다 MediaQuery가 아직 나오기도 전에 화면이 렌더링되어 크기가 전부 께질 때가 있다.
이럴때 아래와 같은 로직으로 MediaQuery가 로딩이 완료 될때 까지 렌더링을 다른 화면으로 대체 할 수 있다. - 사용 코드 (build 함수단)
@override Widget build(BuildContext context) { return FutureBuilder<double>( future: whenNotZero( Stream<double>.periodic(Duration(milliseconds: 100), (x) => MediaQuery.of(context).size.width),//100mil 마다 실행 (whenNotZero에게 보내는 값) ), builder: (context, snapshot) { if (snapshot.hasData) { //사용할때 //height: sizeHeight * 0.4,//화면의 40% //height: sizeHeight * 0.04, //화면의 4% double sizeWidth = MediaQuery.of(context).size.width; double sizeHeight = MediaQuery.of(context).size.height; return Scaffold(); //MediaQuery가 로딩이 끝나고 정상적인 화면 출력 } else { return CircularProgressIndicator(); //MediaQuery가 아직 로딩되지 않았을때, } }); }
- 사용 코드 (whenNotZero 함수단)
Future<double>whenNotZero(Stream<double> source) async { await for (double value in source) { if (value > 0){return value;} //Media크기가 0보다 크면 계산이 끝 } return await whenNotZero(source);//아니면 계속 콜백식으로 무한 함수 불러오기 }
반응형'Flutter_끄적끄적' 카테고리의 다른 글
[Flutter]플러터 (앱 종료 함수) |안드로이드, IOS (0) 2021.11.27 [Flutter]플러터 Back Key(빽키) 컨트롤하기 |안드로이드, IOS (1) 2021.11.27 [Flutter]플러터 암/복호화(encrypt) |안드로이드, IOS (0) 2021.11.18 [Flutter]플러터 (공용 디렉토리 File 경로 읽기/쓰기) |안드로이드, IOS (0) 2021.11.18 [Flutter]플러터 권한(Permission) 얻기 메세지 |안드로이드, IOS (1) 2021.11.18 - 내용