Flutter의 await rootBundle.loadString()
설명
Flutter에서 rootBundle.loadString()
은 앱의 assets 폴더에 저장된 파일(예: JSON 파일, 텍스트 파일 등)을 비동기적으로 읽어오는 방법입니다. await
키워드는 이 작업이 완료될 때까지 기다린 후 결과 값을 반환받는 데 사용됩니다.
rootBundle이란?
rootBundle
은 Flutter에서 기본적으로 제공하는 AssetBundle 객체로, 앱의 리소스(이미지, 텍스트 파일, JSON 파일 등)에 접근할 수 있게 해줍니다. loadString()
메서드를 사용하면 파일을 읽고, 그 파일의 내용을 문자열로 반환합니다.
await의 역할
await
는 비동기 함수가 완료될 때까지 기다린 후 그 결과를 반환하는 역할을 합니다. await
를 사용하면 비동기 작업의 완료 여부에 따라 다른 작업을 진행할 수 있습니다.
loadString()의 사용 예시
rootBundle.loadString()
을 사용하여 assets 폴더에 저장된 JSON 파일을 불러오는 예제입니다:
import 'package:flutter/services.dart';
import 'dart:convert';
import 'package:flutter/material.dart';
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State {
String _data = '';
@override
void initState() {
super.initState();
loadAsset();
}
Future loadAsset() async {
String jsonString = await rootBundle.loadString('assets/data.json');
final jsonResponse = jsonDecode(jsonString);
setState(() {
_data = jsonResponse['message'];
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Load Asset Example'),
),
body: Center(
child: Text(_data),
),
),
);
}
}
assets 파일 등록
rootBundle.loadString()
을 사용하기 위해서는 pubspec.yaml 파일에서 assets를 등록해야 합니다. 예를 들어, assets/data.json
파일을 사용할 경우 다음과 같이 설정해야 합니다:
flutter:
assets:
- assets/data.json
loadString()의 반환 값
rootBundle.loadString()
은 파일의 내용을 String 타입으로 반환합니다. 반환된 문자열은 JSON 파싱이나 텍스트로 화면에 표시하는 데 사용할 수 있습니다.
실제 사용 상황
- JSON 파일 불러오기: 서버와 연동하기 전에 로컬에서 JSON 데이터를 읽어올 때 유용합니다.
- 텍스트 파일 읽기: 텍스트 파일을 앱 내에서 사용하고자 할 때
loadString()
을 통해 불러올 수 있습니다.
결론
await rootBundle.loadString()
은 Flutter에서 로컬 리소스 파일을 비동기적으로 읽어올 때 사용하는 편리한 메서드입니다. 이를 통해 앱의 assets 폴더에 저장된 파일을 쉽게 읽고 처리할 수 있습니다.