Wiki_Flutter_File - inoueshinichi/Wiki_Flutter GitHub Wiki

Flutterのファイルアクセス

参考

非同期ファイルアクセス

  • 非同期ファイルアクセスは基本try-catch-finallyを使う

文字列として読み込み

  • Future<File> writeAsString(<String>)
// 基本1
try {
  var value = await <File>.readAsString();
} catch (e) {
  ...
} finally {
 ...
}

// 基本2
var readFileFuture = Future<File>.then((String value) => value);

同期ファイルアクセス

try {
  var value = <File>.readAsStringSync();
} catch (e) {
  ...
}

Path Provider パッケージ

  • $ flutter pub add path_provider
アプリのファイルを保存する場所を調べる機能を提供する.
スマホの場合, 適当な場所に保存しようとしても失敗する.
あらかじめわりあてられている場所に保存する必要がある.

import 'package:path_provider/path_provider.dart';
import 'dart:io';

final Directory directory = await getApplicationDocumentsDirectory();

final filePath = await File(directory.path + '/' + 'your_path');
  • Future<Directory> getApplicationDocumentsDirectory()

Assetsの読み込み

import 'package:flutter/service.dart';

Future<String> getDataAsset(String path) {
  // AssetBundleクラスのインスタンスが代入されたトップレベルプロパティで,
  // アプリケーションに用意されているリソースを管理する.
  return await rootBundle.loadString(path);
}

Shared Preference パッケージ

  • 設定情報の管理
  • key=value形式
  • '$ flutter pub add shared_preference'
  • Androidでは, SharedPreferencesクラスを使用する
  • iOSでは, UserDefaultsクラスを利用する

扱える値

setメソッド getメソッド
int setInt(, ) getInt()
double setDouble(, ) getDouble()
bool setBool(, ) getBool()
String setString(, ) getString()
List setStringList( []) getStringList()

import 'package:shared_preferences/shared_preferences.dart';

// 非同期
sharedPreferences.getInstance().then(
  (SharedPreferences prefs) {
    // 設定処理
    prefs.setInt(`key_int`, 0);
    prefs.setDouble('key_double', 0.0);
    prefs.setBool('key_bool', false);
    prefs.setString('key_string', 'default');
    prefs.setStringList('key_list_str', <String>['a', 'b', 'c', 'd', 'e']);
    final value = prefs.get('key_***'); // 型はkeyで決まる

    if (value == null) {
      return Future.value(なにか);
    }

  }).catchError((e) {
    // エラー処理
  }).whenComplete(() {
    // 後始末
  });
⚠️ **GitHub.com Fallback** ⚠️