https://github.com/rodydavis/settings_manager
Flutter settings manager built on top of Shared Preferences
https://github.com/rodydavis/settings_manager
flutter flutter-package sharedpreferences
Last synced: 9 months ago
JSON representation
Flutter settings manager built on top of Shared Preferences
- Host: GitHub
- URL: https://github.com/rodydavis/settings_manager
- Owner: rodydavis
- Created: 2020-03-16T09:46:25.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-09-27T18:17:28.000Z (over 4 years ago)
- Last Synced: 2025-04-18T17:30:45.707Z (9 months ago)
- Topics: flutter, flutter-package, sharedpreferences
- Language: Dart
- Size: 197 KB
- Stars: 17
- Watchers: 2
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://pub.dartlang.org/packages/settings_manager)
[](https://pub.dartlang.org/packages/settings_gen)
[](https://www.buymeacoffee.com/rodydavis)
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WSH3GVC49GNNJ)
# Settings Manager
- Flutter settings store built on top of [shared preferences](https://pub.dev/packages/shared_preferences).
- Code Generator for supported types
## Usage
```dart
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:settings_manager/settings_manager.dart';
import 'package:shared_preferences/shared_preferences.dart';
part 'settings.g.dart';
class Settings = SettingsBase with _$Settings;
abstract class SettingsBase with SettingsStore {
@BoolSetting(defaultValue: false)
bool darkMode;
@StringSetting(defaultValue: 'none')
String userId;
@IntSetting(defaultValue: 0)
int counterValue;
@DoubleSetting(defaultValue: 0)
double radialValue;
@StringListSetting(defaultValue: [])
List savedItems;
}
```
## Example
```dart
import 'package:flutter/material.dart';
import 'settings.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(primarySwatch: Colors.blue),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
final _settings = Settings();
@override
void initState() {
_settings.init().then((ready) {
if (mounted) setState(() {});
});
super.initState();
}
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: _settings.counterValueStream,
builder: (context, snapshot) {
return Scaffold(
appBar: AppBar(title: Text(widget.title)),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'You have pushed the button this many times:',
),
Text(
'${snapshot.data}',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => _settings.counterValue = snapshot.data + 1,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
});
}
}
```