Flutterでテキストファイルの読み込み・保存する方法について整理しました。
【Flutter】テキストファイルの読み込み・保存
dart:ioライブラリで、CSVファイルの読み込みができます。

【Flutter入門】ファイルの読み書き・操作
Flutterでファイル読み書きする方法を整理しました。【dart:io編】入力した内容をファイルに読み書きファイル出力用ライブラリ「dart:io」を浸かって、以下のようなファイル読み書きができるアプリを作ってみます。 項目 動作 ボタン...

【Dart入門】ファイルの読み書き操作(text、csvなど)
Dartでファイルの読み書き操作(text、csvなど)をする方法について入門者向けにまとめました。
実行例
【サンプルコード】Flutter + Dart
Flutter + Dartで実装したサンプルコードは以下の通りです。
■lib/main.dart
import 'dart:async';//非同期処理用ライブラリ
import 'dart:io';//ファイル出力用ライブラリ
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart'; //アプリがファイルを保存可能な場所を取得するライブラリ
//テキストフィールドの状態を管理するためのクラス
final _textController = TextEditingController();
final _fileName = 'savedata.txt'; //出力するテキストファイル名
void main() => runApp(MyApp());
//ステートレス
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'サンプルアプリ',
theme: new ThemeData.dark(),
home: FilePage (title: 'サンプルアプリ'),
);
}
}
class FilePage extends StatefulWidget {
FilePage ({Key key, this.title}) : super(key: key);
final String title;
@override
_FilePageState createState() => _FilePageState();
}
//ステートフル
class _FilePageState extends State {
String fileData = '';
//ファイルの保存
void saveButton() async {
saveTxtFile(_textController.text);
}
//ファイルの読み込み
void loadButton() async {
setState(() {
loadTxtFile().then((String value) {
setState(() {
fileData = value;
});
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
//title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('テキスト入力'),
Padding(
padding: EdgeInsets.all(2.0),
child: TextField(
autofocus: true,
controller: _textController, // テキスト入力欄
decoration: InputDecoration(icon: Icon(Icons.arrow_forward)),
),
),
// ボタンタップでsaveButtonメソッド、loadButtonメソッドを呼び出し
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
RaisedButton(child: Text('保存'), onPressed: saveButton),
RaisedButton(child: Text('読込'), onPressed: loadButton),]
),
// 読み込んだファイルの中身を表示
Padding(
padding: EdgeInsets.all(2.0),
child: Text(fileData, )),
],
),
),
);
}
}
//テキストファイルを保存するパスを取得する
Future getFilePath() async {
final directory = await getTemporaryDirectory();
return File(directory.path + '/' + _fileName);
}
//テキストファイルの読み込み
Future loadTxtFile() async {
final file = await getFilePath();
return file.readAsString();
}
//テキストファイルの読み込み
Future saveTxtFile(String data) async {
getFilePath().then((File file) {
file.writeAsString(data);
});
return 0;
}
pubspec.yaml
name: app
depreion: A new Flutter application.
version: 1.0.0+1
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
path_provider: ^0.5.0+1
flutter:
uses-material-design: true
| - | 関連記事 |
|---|---|
| 1 | ■【Flutter入門】iOS、Android、Windowsアプリ開発 |

コメント