flutter_clean_storage 0.0.1 copy "flutter_clean_storage: ^0.0.1" to clipboard
flutter_clean_storage: ^0.0.1 copied to clipboard

A type-safe, clean architecture storage solution for Flutter applications that supports both secure and non-secure storage with built-in parsers for common types.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_clean_storage/flutter_clean_storage.dart';
import 'storage/app_storage.dart';


void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AppStorage.initialize();
  runApp(const MyApp());
}
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Clean Storage Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const StorageDemo(),
    );
  }
}

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

  @override
  State<StorageDemo> createState() => _StorageDemoState();
}

class _StorageDemoState extends State<StorageDemo> {
  // Define storage items
  final counterStorage = 'counter'.asIntStorage();
  final nameStorage = 'username'.asStorage(isSecure: true);
  final lastUpdateStorage = 'lastUpdate'.asDateTimeStorage();
  final settingsStorage = 'isDarkMode'.asBoolStorage();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Clean Storage Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            FutureBuilder<int>(
              future: counterStorage.get(),
              builder: (context, snapshot) {
                return Text(
                  'Counter: ${snapshot.data ?? 0}',
                  style: Theme.of(context).textTheme.headlineMedium,
                );
              },
            ),
            const SizedBox(height: 20),
            FutureBuilder<String>(
              future: nameStorage.get(),
              builder: (context, snapshot) {
                return Text(
                  'Secure Name: ${snapshot.data ?? "Not set"}',
                  style: Theme.of(context).textTheme.titleLarge,
                );
              },
            ),
            const SizedBox(height: 20),
            FutureBuilder<DateTime>(
              future: lastUpdateStorage.get(),
              builder: (context, snapshot) {
                return Text(
                  'Last Update: ${snapshot.data?.toIso8601String() ?? "Never"}',
                );
              },
            ),
            const SizedBox(height: 20),
            FutureBuilder<bool>(
              future: settingsStorage.get(),
              builder: (context, snapshot) {
                return Text(
                  'Dark Mode: ${snapshot.data ?? false}',
                );
              },
            ),
          ],
        ),
      ),
      floatingActionButton: Column(
        mainAxisAlignment: MainAxisAlignment.end,
        children: [
          FloatingActionButton(
            onPressed: () async {
              final current = await counterStorage.get();
              await counterStorage.set(current + 1);
              await lastUpdateStorage.set(DateTime.now());
              setState(() {});
            },
            child: const Icon(Icons.add),
          ),
          const SizedBox(height: 10),
          FloatingActionButton(
            onPressed: () async {
              await nameStorage.set('John Doe');
              await settingsStorage.set(true);
              setState(() {});
            },
            child: const Icon(Icons.person),
          ),
          const SizedBox(height: 10),
          FloatingActionButton(
            onPressed: () async {
              await CleanStorageService.instance.clearEverything();
              setState(() {});
            },
            child: const Icon(Icons.delete),
          ),
        ],
      ),
    );
  }
}
0
likes
160
points
131
downloads

Publisher

unverified uploader

Weekly Downloads

A type-safe, clean architecture storage solution for Flutter applications that supports both secure and non-secure storage with built-in parsers for common types.

Repository (GitHub)
View/report issues

Topics

#storage #secure-storage #preferences #clean-architecture #type-safe

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, flutter_secure_storage, shared_preferences

More

Packages that depend on flutter_clean_storage