adding packages
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
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<MyHomePage> {
|
||||
final _settings = Settings();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_settings.init().then((ready) {
|
||||
if (mounted) setState(() {});
|
||||
});
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return StreamBuilder<int>(
|
||||
stream: _settings.counterValueStream,
|
||||
builder: (context, snapshot) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: Text(widget.title)),
|
||||
body: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
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),
|
||||
),
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
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<String> savedItems;
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'settings.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// StoreGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// ignore_for_file: non_constant_identifier_names, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
|
||||
|
||||
mixin _$Settings on SettingsBase, SettingsStore {
|
||||
SharedPreferences prefs;
|
||||
final _controller = StreamController<Settings>.broadcast();
|
||||
Stream<Settings> get stream => _controller.stream;
|
||||
|
||||
Future<bool> init() async {
|
||||
darkModeNotify(false);
|
||||
userIdNotify('none');
|
||||
counterValueNotify(0);
|
||||
radialValueNotify(0.0);
|
||||
savedItemsNotify([]);
|
||||
prefs = await SharedPreferences.getInstance();
|
||||
darkModeNotify(darkMode);
|
||||
userIdNotify(userId);
|
||||
counterValueNotify(counterValue);
|
||||
radialValueNotify(radialValue);
|
||||
savedItemsNotify(savedItems);
|
||||
return prefs != null;
|
||||
}
|
||||
|
||||
final _darkModeController = StreamController<bool>.broadcast();
|
||||
Stream<bool> get darkModeStream => _darkModeController.stream;
|
||||
final _darkModeNotifier = ValueNotifier<bool>(false);
|
||||
ValueListenable<bool> get darkModeNotifier => _darkModeNotifier;
|
||||
|
||||
@override
|
||||
bool get darkMode {
|
||||
return prefs?.getBool('darkMode') ?? false;
|
||||
}
|
||||
|
||||
@override
|
||||
set darkMode(bool value) {
|
||||
darkModeAsync(value);
|
||||
}
|
||||
|
||||
Future<bool> darkModeAsync(bool value) async {
|
||||
final success = await prefs.setBool('darkMode', value);
|
||||
if (success) {
|
||||
darkModeNotify(value);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
void darkModeNotify(bool value) {
|
||||
_darkModeController.add(value);
|
||||
_darkModeNotifier.value = value;
|
||||
_controller.add(this);
|
||||
}
|
||||
|
||||
final _userIdController = StreamController<String>.broadcast();
|
||||
Stream<String> get userIdStream => _userIdController.stream;
|
||||
final _userIdNotifier = ValueNotifier<String>('none');
|
||||
ValueListenable<String> get userIdNotifier => _userIdNotifier;
|
||||
|
||||
@override
|
||||
String get userId {
|
||||
return prefs?.getString('userId') ?? 'none';
|
||||
}
|
||||
|
||||
@override
|
||||
set userId(String value) {
|
||||
userIdAsync(value);
|
||||
}
|
||||
|
||||
Future<bool> userIdAsync(String value) async {
|
||||
final success = await prefs.setString('userId', value);
|
||||
if (success) {
|
||||
userIdNotify(value);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
void userIdNotify(String value) {
|
||||
_userIdController.add(value);
|
||||
_userIdNotifier.value = value;
|
||||
_controller.add(this);
|
||||
}
|
||||
|
||||
final _counterValueController = StreamController<int>.broadcast();
|
||||
Stream<int> get counterValueStream => _counterValueController.stream;
|
||||
final _counterValueNotifier = ValueNotifier<int>(0);
|
||||
ValueListenable<int> get counterValueNotifier => _counterValueNotifier;
|
||||
|
||||
@override
|
||||
int get counterValue {
|
||||
return prefs?.getInt('counterValue') ?? 0;
|
||||
}
|
||||
|
||||
@override
|
||||
set counterValue(int value) {
|
||||
counterValueAsync(value);
|
||||
}
|
||||
|
||||
Future<bool> counterValueAsync(int value) async {
|
||||
final success = await prefs.setInt('counterValue', value);
|
||||
if (success) {
|
||||
counterValueNotify(value);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
void counterValueNotify(int value) {
|
||||
_counterValueController.add(value);
|
||||
_counterValueNotifier.value = value;
|
||||
_controller.add(this);
|
||||
}
|
||||
|
||||
final _radialValueController = StreamController<double>.broadcast();
|
||||
Stream<double> get radialValueStream => _radialValueController.stream;
|
||||
final _radialValueNotifier = ValueNotifier<double>(0.0);
|
||||
ValueListenable<double> get radialValueNotifier => _radialValueNotifier;
|
||||
|
||||
@override
|
||||
double get radialValue {
|
||||
return prefs?.getDouble('radialValue') ?? 0.0;
|
||||
}
|
||||
|
||||
@override
|
||||
set radialValue(double value) {
|
||||
radialValueAsync(value);
|
||||
}
|
||||
|
||||
Future<bool> radialValueAsync(double value) async {
|
||||
final success = await prefs.setDouble('radialValue', value);
|
||||
if (success) {
|
||||
radialValueNotify(value);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
void radialValueNotify(double value) {
|
||||
_radialValueController.add(value);
|
||||
_radialValueNotifier.value = value;
|
||||
_controller.add(this);
|
||||
}
|
||||
|
||||
final _savedItemsController = StreamController<List<String>>.broadcast();
|
||||
Stream<List<String>> get savedItemsStream => _savedItemsController.stream;
|
||||
final _savedItemsNotifier = ValueNotifier<List<String>>([]);
|
||||
ValueListenable<List<String>> get savedItemsNotifier => _savedItemsNotifier;
|
||||
|
||||
@override
|
||||
List<String> get savedItems {
|
||||
return prefs?.getStringList('savedItems') ?? [];
|
||||
}
|
||||
|
||||
@override
|
||||
set savedItems(List<String> value) {
|
||||
savedItemsAsync(value);
|
||||
}
|
||||
|
||||
Future<bool> savedItemsAsync(List<String> value) async {
|
||||
final success = await prefs.setStringList('savedItems', value);
|
||||
if (success) {
|
||||
savedItemsNotify(value);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
void savedItemsNotify(List<String> value) {
|
||||
_savedItemsController.add(value);
|
||||
_savedItemsNotifier.value = value;
|
||||
_controller.add(this);
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
_darkModeController.close();
|
||||
|
||||
_userIdController.close();
|
||||
|
||||
_counterValueController.close();
|
||||
|
||||
_radialValueController.close();
|
||||
|
||||
_savedItemsController.close();
|
||||
|
||||
_controller.close();
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
final string =
|
||||
'darkMode: ${darkMode.toString()},userId: ${userId.toString()},counterValue: ${counterValue.toString()},radialValue: ${radialValue.toString()},radialValue: ${radialValue.toString()}';
|
||||
return '{$string}';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user