async_storage_reader 0.0.2 copy "async_storage_reader: ^0.0.2" to clipboard
async_storage_reader: ^0.0.2 copied to clipboard

Flutter package to read AsyncStorage data from React Native apps, aiding migration to Flutter without data loss.

example/lib/main.dart

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

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

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: AsyncStorageReaderTestUI(),
    );
  }
}

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

  @override
  State<AsyncStorageReaderTestUI> createState() =>
      _AsyncStorageReaderTestUIState();
}

class _AsyncStorageReaderTestUIState extends State<AsyncStorageReaderTestUI> {
  final _keyController = TextEditingController();
  final _valueController = TextEditingController();
  String _result = '';

  // Instance of AsyncStorageReader, initialized once
  late final AsyncStorageReader _storageReader;

  @override
  void initState() {
    super.initState();

    // Initialize AsyncStorageReader
    _storageReader = AsyncStorageReader();
  }

  void _setResult(String result) {
    setState(() {
      _result = result;
    });
  }

  Future<void> _getItem() async {
    final key = _keyController.text;
    if (key.isEmpty) {
      _setResult('Please enter a key');
      return;
    }
    final value = await _storageReader.getItem(key);
    _setResult('Get Item Result: ${value ?? 'null'}');
  }

  Future<void> _getAllItems() async {
    final items = await _storageReader.getAllItems();
    if (items.isEmpty) {
      _setResult('No items found in storage.');
    } else {
      _setResult(
          'Get All Items Result:\n${items.entries.map((e) => '${e.key}: ${e.value}').join('\n')}');
    }
  }

  Future<void> _removeItem() async {
    final key = _keyController.text;
    if (key.isEmpty) {
      _setResult('Please enter a key');
      return;
    }
    final success = await _storageReader.removeItem(key);
    _setResult('Remove Item Result: ${success ? 'Success' : 'Failed'}');
  }

  Future<void> _clear() async {
    final success = await _storageReader.clear();
    _setResult('Clear Result: ${success ? 'Success' : 'Failed'}');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('AsyncStorageReader Test'),
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            TextField(
              controller: _keyController,
              decoration: const InputDecoration(labelText: 'Key'),
            ),
            const SizedBox(height: 8),
            TextField(
              controller: _valueController,
              decoration: const InputDecoration(labelText: 'Value'),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: _getItem,
              child: const Text('Get Item'),
            ),
            ElevatedButton(
              onPressed: _getAllItems,
              child: const Text('Get All Items'),
            ),
            ElevatedButton(
              onPressed: _removeItem,
              child: const Text('Remove Item'),
            ),
            ElevatedButton(
              onPressed: _clear,
              child: const Text('Clear All'),
            ),
            const SizedBox(height: 16),
            const Text('Result:'),
            const SizedBox(height: 8),
            Container(
              padding: const EdgeInsets.all(8),
              decoration: BoxDecoration(
                border: Border.all(color: Colors.grey),
                borderRadius: BorderRadius.circular(4),
              ),
              child: SelectableText(
                  _result), // Changed to SelectableText for easy copying
            ),
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    _keyController.dispose();
    _valueController.dispose();
    super.dispose();
  }
}
32
likes
160
points
74
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter package to read AsyncStorage data from React Native apps, aiding migration to Flutter without data loss.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, package_info_plus, path_provider, shared_preferences, sqflite

More

Packages that depend on async_storage_reader