[flutter] 플러터 Riverpod를 사용하여 앱에 스플래시 화면 기능을 추가하는 방법은 어떻게 되나요?
- 먼저,
flutter_riverpod
패키지를pubspec.yaml
파일의dependencies
섹션에 추가합니다. 이를 위해 다음 코드를 추가하십시오:
dependencies:
flutter:
sdk: flutter
flutter_riverpod: ^0.14.0+3
- 앱을 시작하면 보여줄 스플래시 페이지 위젯을 만듭니다. 예를 들어
SplashPage
라는 StatelessWidget을 만들어보겠습니다. 다음 코드를 추가하십시오:
import 'package:flutter/material.dart';
class SplashPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
}
- 앱의 진입점인
main()
함수에서SplashPage
위젯을 감싸기 위해ProviderScope
위젯을 추가합니다. 또한runApp()
함수에서SplashPage
를 대신하여 앱의 다른 페이지 또는 홈페이지를 설정합니다. 다음 코드를 추가하십시오:
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
void main() {
runApp(
ProviderScope(
child: MaterialApp(
home: SplashPage(),
),
),
);
}
- 스플래시 화면을 보여주는 동안 초기화 작업을 진행하려면
async
함수를 사용하여Future.delayed()
를 호출합니다. 스플래시 화면이 일정 시간 후에 사라지고 다른 화면으로 이동하도록 설정할 수 있습니다. 예를 들어,init()
함수를 작성하여 2초 후에 다음 페이지로 이동하도록 할 수 있습니다. 다음 코드를SplashPage
위젯 내에 추가하십시오:
void init(BuildContext context) async {
await Future.delayed(Duration(seconds: 2));
// 다른 페이지로 이동하려면 아래 코드를 사용하십시오.
// Navigator.pushReplacement(
// context,
// MaterialPageRoute(builder: (context) => NextPage()),
// );
}
- 마지막으로, 스플래시 화면이 보여질 때
init()
함수를 호출하도록SplashPage
위젯의build()
메서드 내에서context
를 사용합니다. 다음 코드를 추가하십시오:
@override
Widget build(BuildContext context) {
init(context);
return Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
이제 앱을 실행하면 스플래시 화면이 표시되고 일정 시간 후에 다른 페이지로 자동으로 이동합니다. 앱 초기화 작업이 완료되기 전에 보여줄 초기 로딩 화면을 만들어 앱 사용자에게 보다 나은 사용자 경험을 제공할 수 있습니다.
이 문서는 Riverpod를 사용하여 플러터 앱에 스플래시 화면을 추가하는 방법을 설명했습니다. 자세한 내용은 Riverpod 공식 문서를 참조하시기 바랍니다.