Flutterにおけるローカルデータの保存と読み出しについてのチュートリアル

flutter

はじめに

アプリケーション開発において、データの永続的な保存が重要な役割を果たします。この記事では、Flutterでローカルにデータを保存し、それを読み出す方法を紹介します。特に、shared_preferencesパッケージの使用に焦点を当てます。

shared_preferences | Flutter Package
Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android.

ローカルでのデータ登録には、他にもsqliteへの登録もありますがそちらについては下記に記載しています

FlutterでSQLiteデータベースを活用する: sqfliteパッケージの使い方

FlutterでSQLiteデータベースを活用する: sqfliteパッケージの使い方
はじめに 現代のアプリケーションにおいて、データの保存と取り出しは必須の機能であります。多くのモバイルアプリでは、この目的のためにSQLiteデータベースが利用されます。この記事では、FlutterアプリでSQLiteデータベースを操作する...

Flutterでのローカルデータベース管理:Driftパッケージの紹介

Flutterでのローカルデータベース管理:Driftパッケージの紹介
はじめに Flutter開発者として、ローカルデータベースの操作はアプリケーションのパフォーマンスとユーザーエクスペリエンスに大きく影響します。この記事では、この課題を解決する助けとなるパッケージ、Driftについて紹介します。 参照)D...

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パッケージの使用に焦点を当てました。