웹공뷰/flutter
flutter 플러터 csv 파일 읽기
이노키_
2023. 6. 26. 10:22
기능 : 화면에서 특정 버튼을 누르면 csv 파일을 읽어온다.
1. pub csv 라이브러리 추가
https://pub.dev/packages/csv/install
csv | Dart Package
A codec to transform between a string and a list of values. The string must be comma (configurable) separated values.
pub.dev
flutter pub add csv
pubspec.yaml 파일에 아래와 같이 등록됨을 확인
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
csv: ^5.0.2
2. assets 디렉토리 생성 후, 파일 등록
루트디렉토리 아래에 assets 디렉토리 > csv 디렉토리 생성.
사용하려는 csv 파일을 등록
참고로 test.csv 파일의 내용은 아래와 같다.
3. pubspec.yaml 파일에 assets/csv/test.csv 경로 입력
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
assets:
- assets/csv/test.csv
4. 버튼 클릭시 파일 읽어오는 함수 추가
import 'package:csv/csv.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:uddutsi/tab/search/upload_model.dart';
class SearchPage extends StatefulWidget {
const SearchPage({Key? key}) : super(key: key);
@override
State<SearchPage> createState() => _SearchPageState();
}
class _SearchPageState extends State<SearchPage> {
List<List<dynamic>> _data = [];
//csv 파일 로드하는 함수 선언
void _loadCSV() async{
final _rawData = await rootBundle.loadString('assets/csv/test.csv');
List<List<dynamic>> _listData =
const CsvToListConverter().convert(_rawData);
setState(() {
_data = _listData;
});
}
@override
Widget build(BuildContext context) {
UploadModel model = UploadModel();
return Scaffold(
appBar: AppBar(
title: const Text('[test]'),
),
body: Row(
children: [
ElevatedButton(
onPressed: _loadCSV ,
child: const Text('upload categories'),
),
],
)
);
}
}
upload categories 버튼을 클릭했을때(디버깅모드로 실행중) 아래처럼 데이터가 _listData 변수에 들어가 있음을 확인할 수 있다.