facebook twitter hatena line email

「Flutter/外部ライブラリ/shared preferences」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(文字列設定・取得)
(文字列リスト設定・取得)
行38: 行38:
 
       names = new List<String>();
 
       names = new List<String>();
 
     }
 
     }
     names.add("new text2");
+
     names.add("new text");
 
     names.forEach((item) {
 
     names.forEach((item) {
 
       print(item);
 
       print(item);

2019年4月30日 (火) 19:13時点における版

shared_preferencesをインストール

pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^0.5.2

flutter packages get

値設定、値取得

準備

import 'package:shared_preferences/shared_preferences.dart';

数値取得

void _incrementCounter() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  int counter = prefs.getInt('counter');
}

数値設定

void _incrementCounter() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setInt('counter', 10);
}

asyncで囲む必要がある

文字列設定・取得

   String name = prefs.getString("name");
   name = "${name} ${counter}";
   await prefs.setString('name', name);

文字列リスト設定・取得

   SharedPreferences prefs = await SharedPreferences.getInstance();
   List<String> names = prefs.getStringList("textnames");
   if (names == null) {
     names = new List<String>();
   }
   names.add("new text");
   names.forEach((item) {
     print(item);
   });
   await prefs.setStringList('textnames', names);

サンプル

import 'package:shared_preferences/shared_preferences.dart';

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  _incrementCounter() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    int counter = (prefs.getInt('counter') ?? 0) + 1;
    print('Pressed $counter times.');
    await prefs.setInt('counter', counter);
    setState(() {
      _counter = counter;
    });
  }
  @override
  void initState(){
    _incrementCounter();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'HelloWorld:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

Unhandled Exception: MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferencesエラーが起こるとき

flutter run

参考

公式shared_preferences:https://pub.dartlang.org/packages/shared_preferences

公式shared_preferences-class:https://pub.dartlang.org/documentation/shared_preferences/latest/shared_preferences/SharedPreferences-class.html

Flutterで[key : value] 形式でローカルにデータを保存する https://qiita.com/superman9387/items/4786ba4208a546842176