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);
}
}