はじめに
アプリケーション開発において、データの永続的な保存が重要な役割を果たします。この記事では、Flutterでローカルにデータを保存し、それを読み出す方法を紹介します。特に、shared_preferences
パッケージの使用に焦点を当てます。
ローカルでのデータ登録には、他にもsqliteへの登録もありますがそちらについては下記に記載しています
FlutterでSQLiteデータベースを活用する: sqfliteパッケージの使い方
Flutterでのローカルデータベース管理:Driftパッケージの紹介
Flutterでのローカルデータの保存: shared_preferences パッケージ
Flutterでは、データを永続的に保存するためにはいくつかの方法がありますが、その中でも一般的に利用されるのが shared_preferences
パッケージです。これは、AndroidのSharedPreferencesとiOSのNSUserDefaultsに相当する、簡易的な永続ストレージを提供します。
まず、pubspec.yamlファイルにshared_preferencesパッケージを追加します。
flutter pub add shared_preferences
次に、データの保存と読み出しには以下のようなコードを使用します。
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Shared Preferences Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
String data = '';
@override
void initState() {
super.initState();
loadSavedData();
}
Future loadSavedData() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
data = prefs.getString('my_data_key') ?? '';
});
}
Future saveData(String value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('my_data_key', value);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Shared Preferences Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Saved Data: $data',
),
TextField(
onSubmitted: saveData,
),
],
),
),
);
}
}
上記のコードでは、アプリの起動時に保存されたデータをロードし、表示します。また、テキストフィールドで入力されたでキーパッド入力が完了したタイミングでデータを保存する処理を行います
これで、アプリを終了しても、次の起動で保存されたデータが利用できるようになります
まとめ
データの保存と読み出しは、アプリケーション開発では非常に重要な要素です。しかし、shared_preferences
を使った方法は小規模なデータに最適です。例えば、ユーザーの設定や、ログイン状態など、アプリ全体で使用するような一部の情報を保存するのに便利です。
しかし、より大量のデータを扱う場合、特に関係性を持つデータを扱う場合、あるいは複雑なクエリを行いたい場合には、より強力なデータストレージソリューションが必要となります。そのような場合には、SQLiteを直接使用するか、あるいはFirebaseのようなクラウドベースのデータベースを使用することを検討してみてください。
本記事では、Flutterでのローカルデータの保存と読み出しについて紹介しました。特に、小規模なデータの保存に適したshared_preferences
パッケージの使用に焦点を当てました。