save_points_screen_builder 1.0.2 copy "save_points_screen_builder: ^1.0.2" to clipboard
save_points_screen_builder: ^1.0.2 copied to clipboard

A modular, configuration-driven screen generator for common Flutter application flows with Material 3 support.

Save Points Screen Builder #

A powerful, configuration-driven screen generator for Flutter 3 with Material 3 design system. Build production-ready screens in minutes.

Flutter Dart License: MIT Version


Overview #

Save Points Screen Builder eliminates boilerplate by providing a fluent builder API for common screen patterns. Whether you need authentication flows, product listings, or settings screens—build them declaratively with type safety and modern design out of the box.

// Create a sign-in screen in seconds
SignInScreenBuilder()
  .title('Welcome Back')
  .submitButton(label: 'Sign In', onSubmit: handleSignIn)
  .socialLogin([SocialLoginButton.google(onGoogleSignIn)])
  .build();

Table of Contents #


Features #

Feature Description
Material 3 Design Professional color scheme, typography, and spacing system
Builder Pattern Fluent, chainable APIs for all 15 screen types
Form Engine Dynamic form generation with 15+ field types and validators
List Engine Declarative list/grid layouts with modern card designs
Type Safe Full null safety and strong typing throughout
Responsive Adaptive layouts for mobile, tablet, and desktop
Accessible WCAG AA compliant with proper contrast ratios
Dark Mode Complete light and dark theme support
15+ Components Reusable UI components (cards, buttons, badges, etc.)

Installation #

Add to your pubspec.yaml:

dependencies:
  save_points_screen_builder: ^1.0.2
flutter pub get

Quick Start #

1. Apply the Theme #

import 'package:save_points_screen_builder/save_points_screen_builder.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: AppTheme.lightTheme,
      darkTheme: AppTheme.darkTheme,
      themeMode: ThemeMode.system,
      home: const HomePage(),
    );
  }
}

2. Build Your First Screen #

// Splash Screen
SplashScreenBuilder()
  .headline('My App')
  .subtitle('Welcome')
  .animation(SplashAnimation.fadeIn)
  .duration(const Duration(seconds: 3))
  .onFinish(() => Navigator.pushReplacementNamed(context, '/home'))
  .build();

Screen Types #

Static Screens #

Screen Description
SplashScreenBuilder Animated splash with logo and transitions
OnboardingScreenBuilder Multi-page intro with smooth animations
WelcomeScreenBuilder Eye-catching landing page
SuccessScreenBuilder Confirmation with animations
ErrorScreenBuilder User-friendly error handling

Form Screens #

Screen Description
SignInScreenBuilder Login with social auth support
SignUpScreenBuilder Multi-step registration flow
OTPScreenBuilder Code verification with auto-focus
ForgotPasswordScreenBuilder Password reset flow
EditProfileScreenBuilder User profile management

List Screens #

Screen Description
ProductListScreenBuilder Grid/list with enhanced cards
ShoppingCartScreenBuilder Cart management with totals
SettingsScreenBuilder Grouped settings with icons
ProfileScreenBuilder User stats and information
NotificationsScreenBuilder Categorized notifications

Core Concepts #

Screen Configuration #

Customize screens globally with ScreenBuilderConfig:

final config = ScreenBuilderConfig(
  seedColor: Colors.blue,
  fontFamily: 'Roboto',
  spacing: 8.0,
  borderRadius: 12.0,
  useSafeArea: true,
  pagePadding: EdgeInsets.all(16.0),
);

SignInScreenBuilder()
  .configuration(config)
  .build();

Form Engine #

Build forms declaratively with type-safe field configurations:

FormFieldConfig.email(
  id: 'email',
  label: 'Email Address',
  hint: 'Enter your email',
  required: true,
  validator: Validators.combine([
    Validators.required(),
    Validators.email(),
  ]),
)

Field Types: text · email · password · phone · number · multiline · search · url · otp · dropdown · checkbox · switchToggle · slider · date · time · datetime

Validators:

Validator Description
required() Field cannot be empty
email() Valid email format
phone() Valid phone format
url() Valid URL format
minLength(n) Minimum character length
maxLength(n) Maximum character length
password() Password strength validation
numeric() Numeric value only
pattern(regex) Custom regex pattern
match(getValue, field) Match another field
otp(length) OTP code validation
combine(validators) Combine multiple validators

List Engine #

Create lists and grids with flexible layouts:

// Grid layout
ListLayout.grid(
  columns: 2,
  aspectRatio: 0.75,
  crossAxisSpacing: 16,
  mainAxisSpacing: 16,
)

// Simple list
ListLayout.list(spacing: 8)

// Responsive columns
ListLayout.adaptive()

Item Builders:

// Card items
CardItemBuilder<Product>((context, product, index) => 
  Card(child: ProductContent(product))
)

// List tiles
ListTileItemBuilder<Item>((context, item, index) => 
  ListTile(title: Text(item.title))
)

// Grid tiles
GridTileItemBuilder<Product>((context, product, index) => 
  GridTile(child: ProductImage(product))
)

// Full custom
CustomItemBuilder<T>((context, item, index) => 
  YourCustomWidget(item: item)
)

Design System #

Color Palette #

The design system uses a professional Material 3 color scheme:

Type Purpose
Primary Main brand color, primary actions
Secondary Supporting elements, secondary actions
Tertiary Accents, highlights
Error Error states, destructive actions
Surface Cards, sheets, dialogs

Typography Scale #

Style Size Use Case
Display 57sp Hero text
Headline 32sp Page titles
Title 22sp Section headers
Body 16sp Content text
Label 14sp Buttons, captions

Spacing System #

Based on 4dp increments: 4 · 8 · 12 · 16 · 20 · 24 · 32 · 40 · 48 · 64

Border Radius #

Size Value Use Case
Small 8dp Chips, badges
Medium 12dp Cards, buttons
Large 16dp Sheets, dialogs
XL 24dp Full cards

UI Components #

Cards #

SPCard(
  child: YourContent(),
  onTap: () => handleTap(),
)

GlassCard(
  child: YourContent(),
)

Buttons #

GradientButton(
  label: 'Get Started',
  icon: Icons.rocket_launch,
  onPressed: () {},
)

IconButtonWithBackground(
  icon: Icons.favorite,
  onPressed: () {},
)

Text Fields #

SPTextField(
  label: 'Email',
  hint: 'Enter your email',
  controller: emailController,
)

SPSearchField(
  onChanged: (query) => search(query),
)

States #

EmptyState(
  icon: Icons.inbox_outlined,
  title: 'No items found',
  subtitle: 'Start by adding your first item',
  action: FilledButton(
    onPressed: () {},
    child: Text('Add Item'),
  ),
)

SPLoadingIndicator()

Lists & Tiles #

SPListTile(
  leadingIcon: Icons.settings,
  title: 'Settings',
  subtitle: 'App preferences',
  onTap: () {},
)

SectionDivider(title: 'Account')

Chips & Badges #

SPFilterChip(
  label: 'Active',
  selected: isSelected,
  onSelected: (value) => setState(() => isSelected = value),
)

SPBadge(
  label: 'New',
  color: Colors.green,
)

Snackbars #

SPSnackBar.showSuccess(context, 'Saved successfully!');
SPSnackBar.showError(context, 'Something went wrong');
SPSnackBar.showInfo(context, 'Processing...');

Advanced Usage #

Custom Theme #

ScreenBuilderConfig(
  colorScheme: ColorScheme.fromSeed(
    seedColor: Colors.indigo,
    brightness: Brightness.dark,
  ),
  textTheme: GoogleFonts.poppinsTextTheme(),
  appBarConfig: AppBarConfig(
    centerTitle: true,
    elevation: 0,
  ),
)

Custom Form Fields #

FormFieldConfig(
  id: 'custom',
  type: FormFieldType.custom,
  customBuilder: (context, config, controller) {
    return YourCustomFieldWidget(
      controller: controller,
      config: config,
    );
  },
)

Custom Item Builders #

class MyCustomItemBuilder<T> extends ItemBuilderBase<T> {
  @override
  Widget build(BuildContext context, T item, int index) {
    return MyCustomWidget(item: item, index: index);
  }
}

ListScreenBuilder<MyItem>()
  .itemBuilder(MyCustomItemBuilder())
  .build();

Examples #

The /example folder contains a complete demo app showcasing all 15 screen types.

cd example
flutter run

Demo Features:

  • Modern card-based navigation with gradient icons
  • Categorized sections (Static, Form, List screens)
  • Light and dark theme support
  • All screens demonstrate best practices

Documentation #

Document Description
Design System Guide Complete design system documentation
Quick Start Guide Get started in 5 minutes
Redesign Summary Overview of UI improvements

Architecture #

lib/
├── src/
│   ├── core/              # Base classes & configuration
│   ├── design_system/     # Theme & UI components
│   ├── form_engine/       # Form field configs & validators
│   ├── list_engine/       # List layouts & item builders
│   ├── screens/
│   │   ├── static/        # Static screen builders
│   │   ├── forms/         # Form-based screen builders
│   │   └── lists/         # List-based screen builders
│   └── utils/             # Theme extensions & animations
└── save_points_screen_builder.dart

What's New in v1.0.2 #

  • Design System — Complete Material 3 theme with 865 lines of code
  • UI Components — 15+ reusable components (796 lines)
  • Enhanced Forms — Gradient backgrounds, modern styling
  • Modern Lists — Redesigned cards and layouts
  • Dark Mode — Optimized for both themes
  • Accessibility — WCAG AA compliance
  • Zero Warnings — Clean, production-ready code

Contributing #

Contributions are welcome! Please read our contributing guidelines before submitting PRs.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License #

This project is licensed under the MIT License - see the LICENSE file for details.


Support #


Built with Flutter & Material 3

Version 1.0.2 · Production Ready · February 2026

1
likes
140
points
255
downloads

Publisher

unverified uploader

Weekly Downloads

A modular, configuration-driven screen generator for common Flutter application flows with Material 3 support.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

collection, flutter

More

Packages that depend on save_points_screen_builder