복잡한 레이아웃과 그래픽이 많이 포함되어 빌드 비용이 많이 드는 위젯의 경우 `AutomaticKeepAliveClientMixin`를 사용하여 `wantKeepAlive` 속성을 `true`로 설정하면 이 위젯의 상태를 캐시하고 화면에 표시되지 않을 때 다시 빌드되는 것을 방지할 수 있습니다.
추가로 탭바에서 탭을 할 때마다 재렌더링 되는 것을 볼 수 있는데, 스크롤 위치를 기억한 화면을 표시하기 위해서 사용할 수도 있습니다.
이렇게 하면 위젯을 다시 빌드해야 하는 횟수를 줄여 앱의 성능을 개선하는 데 도움이 될 수 있습니다.
예제
import 'package:flutter/material.dart';
class MyExpensiveToBuildWidget extends StatefulWidget {
@override
_MyExpensiveToBuildWidgetState createState() => _MyExpensiveToBuildWidgetState();
}
class _MyExpensiveToBuildWidgetState extends State<MyExpensiveToBuildWidget> with AutomaticKeepAliveClientMixin {
@override
bool get wantKeepAlive => true;
@override
Widget build(BuildContext context) {
super.build(context);
// This widget is expensive to build because it contains a lot of complex
// layout and graphics.
return Container(
width: 200,
height: 200,
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(10),
),
child: Text('Expensive to build'),
);
}
}
728x90
사업자 정보 표시
레플라 | 홍대기 | 경기도 부천시 부일로 519 화신오피스텔 1404호 | 사업자 등록번호 : 726-04-01977 | TEL : 070-8800-6071 | Mail : support@reafla.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기
'Dart > Flutter' 카테고리의 다른 글
[Flutter] 플러터 성능향상을 위한 `GPU enableSoftwareRendering` 가속하기 (0) | 2022.12.24 |
---|---|
[Flutter] 플러터 성능향상을 위한 지연로딩 하기 (0) | 2022.12.24 |
[Flutter] 플러터 성능향상을 위한 `RepaintBoundary` 위젯 사용하기 (0) | 2022.12.24 |
[Flutter] 플러터 파이어베이스(Firebase)를 통한 구글(Google) 소셜 로그인 설정하기 (0) | 2022.12.24 |
[Flutter] 플러터 `Rive` 적용하기 (0) | 2022.12.23 |