앱/Flutter 4

[Flutter] Flutter 3.7.x에서 발생하는 flutter_staggered_grid_view LateInitializationError 수정하기

최초작성일: 2023년 4월 5일 이번에 플러터 버전을 업데이트하면서 새로운 에러들을 확인하고 있다. 그 중 LateInitializationError는 에러가 발생하는 위젯/하위 위젯 모두 late나 nullable로 선언된 변수가 없어서 왜 발생하는지 알 수가 없었다. LateInitializationError: Field '_children@25042623' has not been initialized. 플러터와 패키지 버전을 올린 이후에 발생한 문제라서 패키지에서 발생한 문제인지 의심했고, 에러 로그에서 문제가 되는 패키지의 경로를 확인할 수 있었다!! 그래서 구글링 결과, 해당 패키지 깃헙에서 이슈를 확인할 수 있었다. 해결 방법은 다음과 같다! (출처) @override Widg..

앱/Flutter 2023.08.28

[Flutter] Sliver에서 Expanded처럼 나머지 공간 차지하게 하기 : SliverFillRemaining

최초작성일: 2023년 1월 16일 0. Slivers 안에서 Expanded가 사용하고 싶었다. 앱에서 현재 사용하고 있는 공통 Layout widget을 사용해야 했고, 또CustomScrollView를 사용하고 있기 때문에 반드시 Sliver를 사용해서 ui를 그려야 했다. 내가 그리고 싶었던 것은 데이터가 없는 경우에 화면 중앙에 다른 위젯을 그려주는 것이었다. 정리를 해보면, 데이터가 있는 경우 : 스크롤 위젯 => SliverList 데이터가 없는 경우 : 스크롤X 위젯 => ?? 이런 상황이었다. 1. SliverToBoxAdapter를 사용하기 플러터에서 ui를 그릴 때 남은 공간을 모두 차지하게 하기위해 Expanded를 자주 사용하게 된다. (구체적인 예제는 공식문서 : Expanded..

앱/Flutter 2023.08.08

[Flutter] iOS의 scroll to top 기능은 어떻게 구현되어 있는가 (feat. 안될 때 확인해볼 것!)

최초작성일 : 2022년 11월 12일 1. ios의 scroll to top 기능이 flutter에서 어떻게 구현되어 있는가 1. Scaffold 안드로이드와 달리 ios에서는 화면 상단에 있는 status bar를 누르면 가장 위로 화면이 스크롤되는 기능이 있다. flutter에서는 특별하게 이 기능을 구현하지 않아도 ios에서는 적용이 되는데, 그 이유는 `Scaffold`에 해당 기능이 구현되어 있기 때문이다. class Scaffold extends StatefulWidget { ... void _handleStatusBarTap() { final ScrollController? primaryScrollController = PrimaryScrollController.of(context); if..

앱/Flutter 2023.07.18

[Flutter] 특정 스크린을 보고 있는지 확인하기(with WidgetsBindingObserver visibility_detector)

0. 문제 상황 유저가 특정 스크린을 다시 볼 때 마다 데이터를 업데이트를 하는 기능을 추가하게 되었다. 구체적으로 데이터가 업데이트되는 상황은 다음과 같다. 1. 유저가 다른 스크린에 갔다가 다시 해당 스크린으로 돌아올 때 2. 유저가 해당 스크린에서 앱 바깥으로 나갔다가(background) 다시 앱으로 돌아왔을 때(foreground)` 이 기능을 구현하기 위해서는 먼저, 유저가 현재 해당 스크린을 보고 있다는 걸 확인해야 한다. WidgetsBindingObserver와 visibility_detector를 사용해서 구현하였다. 1. WidgetsBindingObserver 공식문서 WidgetsBindingObserver은 mixin으로 사용하며, initState와 dispose에서 obser..

앱/Flutter 2023.07.16