Preset Library

Advanced theme management system integrated with string codec to make user preferences storage explicit for developers

Getting Started

pubspec.yaml

Add super text to pubspec.yaml file


...
environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  preset:
    git: https://github.com/rey-xi/preset.git 
...

Or


...
environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  preset: ^0.0.1
...

Usage

Preset

The basic and core method to declare presets. The values of presets will be passed down to child and it's hierarchy via context.

Preset App

PresetApp is the most basic way to implement the preset library in your app. PresetApp is a direct subclass of MaterialApp with additional argument to assign default presets

Example
@override
Widget build(BuildContext context) {
  //...
   return PresetApp(
      title: 'Preset App',
      home: const PresetHome(),
      preset: {
        Palette.internal,
        Typeface.redmond,
      }
   );
}

Preset Builder

Preset builder instances can be assigned to MaterialApp.builder of the conventional material app: If making use of the conventional Material app is important, making use of this method can come in handy.

Example
@override
Widget build(BuildContext context) {
  //...
  return MaterialApp(
    //...
    builder: PresetBuilder(
      preset: {
        ColorPreset.internal,
        GlyphPreset.redmond,
      },
      protocol: Protocol.irs,
    ),
  );
}

Preset Codec

Conversion algorithm for Preset and PresetValue. Few default preset codecs have been declared in the library including:

  • qTextTheme or TextThemeCodec for TextTheme
  • qTextStyle or TextStyleCodec for TextStyle
  • qLocale or LocaleCodec for Locale
  • qColor or ColorCodec for Color
Example
 encode(TextStyle obj) {
   final type1 = qTextStyle.encode(obj);
   final type2 = TextStyleCodec().encode(obj);
 }

Protocol

Preset values implementor class. A typical consumer class for preset values. Basically, Protocol is meant to implement the preset values in MaterialApp as MaterialApp.theme and ThemeData.extensions

Example
  @override
Widget build(BuildContext context) {
  //...
  return ProtocolBox(
    protocol: Protocol.xls,
    child: child,
  );
}

Working Example:

import 'package:flutter/material.dart';
import 'package:popup/popup.dart';
import 'package:preset/preset.dart' as preset;
import 'package:rey_xi/screens/splash.dart';
import 'package:text2/text2.dart';

void main() {
  runApp(const PresetApp());
}

class PresetApp extends StatelessWidget {
  //...Fields
  const PresetApp({super.key});

  //...Methods
  @override
  Widget build(BuildContext context) {
    //...
    return preset.PresetApp(
      title: 'Nueli',
      home: const PresetSplash(),
      defaultPresets: const [
        Palette(
          primary: Color(0xFF7E677E),
          foreground: Color(0xFF6E6A6E),
          secondary: Color(0xffd08686),
          success: Color(0xff499f51),
          error: Color(0xffdc5856),
          warning: Color(0xffe5ad71),
          background: Color(0xffe1dacb),
          ascent: Color(0xffe7cfae),
          shade: Color(0x5a75503d),
          tint: Color(0x5af5ede2),
        ), 
        Typeface.mountainView,
      ],
    );
  }
}

Thanks.

Libraries

preset