๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์›น๊ณต๋ทฐ/flutter

flutter ํ”Œ๋Ÿฌํ„ฐ csv ํŒŒ์ผ ์ฝ๊ธฐ

by ์ด๋…ธํ‚ค_ 2023. 6. 26.

๊ธฐ๋Šฅ : ํ™”๋ฉด์—์„œ ํŠน์ • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด 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 ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋Œ“๊ธ€