flutter_form_draft 0.2.0 copy "flutter_form_draft: ^0.2.0" to clipboard
flutter_form_draft: ^0.2.0 copied to clipboard

Automatic form draft saving, encrypted persistence, restoration, versioning, expiration, and lifecycle recovery for Flutter applications.

example/lib/main.dart

import 'package:flutter/material.dart';

import 'examples/advanced_fields_example.dart';
import 'examples/basic_form_example.dart';
import 'examples/draft_management_example.dart';
import 'examples/encrypted_form_example.dart';
import 'examples/multiple_drafts_example.dart';
import 'examples/registration_form_example.dart';

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

/// Example application demonstrating flutter_form_draft features.
class FormDraftExampleApp extends StatelessWidget {
  /// Creates the example app.
  const FormDraftExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'flutter_form_draft',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigo),
        useMaterial3: true,
      ),
      home: const ExampleHomePage(),
    );
  }
}

/// Home screen listing available examples.
class ExampleHomePage extends StatelessWidget {
  /// Creates the home page.
  const ExampleHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    final examples = [
      _ExampleEntry(
        title: 'Basic Contact Form',
        subtitle: 'Auto-save, restore dialog, save indicator',
        builder: (_) => const BasicFormExample(),
      ),
      _ExampleEntry(
        title: 'Registration Form',
        subtitle: 'Excluded password fields',
        builder: (_) => const RegistrationFormExample(),
      ),
      _ExampleEntry(
        title: 'Multiple Drafts',
        subtitle: 'Separate drafts for the same form',
        builder: (_) => const MultipleDraftsExample(),
      ),
      _ExampleEntry(
        title: 'Encrypted Draft',
        subtitle: 'AES-GCM encryption and excluded sensitive fields',
        builder: (_) => const EncryptedFormExample(),
      ),
      _ExampleEntry(
        title: 'Advanced Fields',
        subtitle: 'Enum, map, list, date, model, and file references',
        builder: (_) => const AdvancedFieldsExample(),
      ),
      _ExampleEntry(
        title: 'Draft Management',
        subtitle: 'Search, filter, rename, duplicate, and delete drafts',
        builder: (_) => const DraftManagementExample(),
      ),
    ];

    return Scaffold(
      appBar: AppBar(title: const Text('flutter_form_draft examples')),
      body: ListView.separated(
        padding: const EdgeInsets.all(16),
        itemCount: examples.length,
        separatorBuilder: (_, __) => const SizedBox(height: 12),
        itemBuilder: (context, index) {
          final example = examples[index];
          return Card(
            child: ListTile(
              title: Text(example.title),
              subtitle: Text(example.subtitle),
              trailing: const Icon(Icons.chevron_right),
              onTap: () {
                Navigator.of(context).push(
                  MaterialPageRoute<void>(
                    builder: example.builder,
                  ),
                );
              },
            ),
          );
        },
      ),
    );
  }
}

class _ExampleEntry {
  const _ExampleEntry({
    required this.title,
    required this.subtitle,
    required this.builder,
  });

  final String title;
  final String subtitle;
  final WidgetBuilder builder;
}
0
likes
160
points
32
downloads

Documentation

API reference

Publisher

verified publisheramirsaleemahmad.com

Weekly Downloads

Automatic form draft saving, encrypted persistence, restoration, versioning, expiration, and lifecycle recovery for Flutter applications.

Repository (GitHub)
View/report issues
Contributing

Topics

#form #autosave #draft #persistence #offline

License

MIT (license)

Dependencies

collection, crypto, cryptography, flutter, meta, path, shared_preferences

More

Packages that depend on flutter_form_draft