katana_prefs_builder

Last updated:

0 purchases

katana_prefs_builder Image
katana_prefs_builder Images
Add to Cart

Description:

katana prefs builder

Katana Prefs
















[GitHub] | [YouTube] | [Packages] | [Twitter] | [Threads] | [LinkedIn] | [mathru.net]

Introduction #
Shared Preferences is a useful plugin.
I think this plugin is the best way to store simple data for the application.
However, I have the following complaints when using the system.

Need to remember the key because the key will be a String type.
The type of value to be retrieved also depends on the key and must be remembered.
Instances of SharedPreferences need to be retrieved asynchronously

In most cases, I think they are wrapped in a separate class or something to make them easier to use.
I have created the following package to solve the above problems.

Automatic generation of classes to read/write SharedPreferences data with Freezed-like notation
Parameter types and keys are predefined, allowing type-safe implementation
Cache instances of SharedPreferences so that data can be retrieved synchronously
Inherits from ChangeNotifier, so it is possible to detect a change in value and do something with it.

For example, the following statement is used
@prefs
class PrefsValue with _$PrefsValue, ChangeNotifier {
factory PrefsValue({
String? userToken,
required double volumeSetting,
}) = _PrefsValue;
}
copied to clipboard
When build_runner is run with this, a class that can read and write SharedPreferences data is automatically generated.
By defining this, data can be read and written anywhere.
final appPrefs = PrefsValue(volumeSetting: 0.5);

class PrefsPage extends StatefulWidget {
const PrefsPage({super.key});

@override
State<StatefulWidget> createState() => PrefsPageState();
}

class PrefsPageState extends State<PrefsPage> {

@override
void initState() {
super.initState();
prefs.addListener(() {
setState(() {});
});
appPrefs.load();
}

@override
Widget build(BuildContext context, WidgetRef ref){
final volumeSetting = appPrefs.volumeSetting.get();

~~~~
appPrefs.volumeSetting.set(1.0); // At this time, appPrefs is also notified of the change and the widget is re-updated.
~~~~
}
}
copied to clipboard
Installation #
Import the following package for code generation using build_runner.
flutter pub add katana_prefs
flutter pub add --dev build_runner
flutter pub add --dev katana_prefs_builder
copied to clipboard
Implementation #
Make a Class #
Create a class as follows
Add part '(filename).prefs.dart';.
Annotate the defined class with @prefs and mixin _$(defined class name) and ChangeNotifier.
The constructor is created in the factory and defines the values to be used in the parameters.
(Required values are marked required; if required is not marked, leave it as it is.)
After the constructor, write = _(defined class name).
// prefs_value.dart

import 'package:flutter/material.dart';
import 'package:katana_prefs/katana_prefs.dart';

part 'prefs_value.prefs.dart';

@prefs
class PrefsValue with _$PrefsValue, ChangeNotifier {
factory PrefsValue({
String? userToken,
required double volumeSetting,
}) = _PrefsValue;
}
copied to clipboard
Code Generation #
Automatic code generation is performed by entering the following command.
flutter pub run build_runner build --delete-conflicting-outputs
copied to clipboard
How to use #
Define values globally.
When creating an object, enter the value specified in required. This will be the initial value.
final appPrefs = PrefsValue(volumeSetting: 0.5);
copied to clipboard
Before loading the first value, it executes the load() method and waits for it to finish.
(It is also possible to wait for the end by monitoring the loading field.)
@override
void initState() {
super.initState();
appPrefs.load();
}
copied to clipboard
The state can be monitored with addListener if necessary.
@override
void initState() {
super.initState();
prefs.addListener(() {
setState(() {});
});
appPrefs.load();
}
copied to clipboard
It is possible to retrieve data from SharedPreference with appPrefs.(defined value).get().
final volumeSetting = appPrefs.volumeSetting.get();
copied to clipboard
Data can be stored in SharedPreference with appPrefs.(defined value).set(value).
When the save is complete, notifyListeners() is called to execute the callback monitored by addListener.
appPrefs.volumeSetting.set(1.0);
copied to clipboard
GitHub Sponsors #
Sponsors are always welcome. Thank you for your support!
https://github.com/sponsors/mathrunet

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.