pubspec.yamlにShared Preferencesというパッケージを追加する必要がある
dependencies: flutter: sdk: flutter path_provider: any shared_preferences: any
class _MyHomePageState extends State<MyHomePage> { final _controller = TextEditingController(); double _r = 0.0; double _g = 0.0; double _b = 0.0; @override void initState(){ super.initState(); loadPref(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Home'), ), body: Padding( padding: EdgeInsets.all(20), child:Column( children:<Widget> [ Text('PREFERENCES ACCESS', style: TextStyle(fontSize: 32, fontWeight: ui.FontWeight.w500), ), Padding(padding: EdgeInsets.all(10.0)), TextField( controller: _controller, style: TextStyle(fontSize: 24), minLines: 1, maxLines: 5, ), Padding(padding: EdgeInsets.all(10.0)), Slider( min: 0.0, max: 255.0, value: _r, divisions: 255, onChanged: (double value) { setState(() { _r = value; }); }, ), Slider( min: 0.0, max: 255.0, value: _g, divisions: 255, onChanged: (double value) { setState(() { _g = value; }); }, ), Slider( min: 0.0, max: 255.0, value: _b, divisions: 255, onChanged: (double value) { setState(() { _b = value; }); }, ), Container( padding: EdgeInsets.all(20), width: 125, height: 125, color: Color.fromARGB(255, _r.toInt(), _g.toInt(), _b.toInt()), ), ], ), ), floatingActionButton: FloatingActionButton( child: Icon(Icons.open_in_new), onPressed: () { savePref(); showDialog( context: context, builder: (BuildContext context) => AlertDialog( title: Text("saved!"), content: Text("save preferences."), ) ); } ) ); } void loadPref() async { final prefs = await SharedPreferences.getInstance(); setState((){ _r = (prefs.getDouble('r') ?? 0.0); _g = (prefs.getDouble('g') ?? 0.0); _b = (prefs.getDouble('b') ?? 0.0); _controller.text = (prefs.getString('input') ?? ''); }); } void savePref() async { final prefs = await SharedPreferences.getInstance(); prefs.setDouble('r', _r); prefs.setDouble('g', _g); prefs.setDouble('b', _b); prefs.setString('input', _controller.text); } }