wepin_flutter_storage 1.0.0 copy "wepin_flutter_storage: ^1.0.0" to clipboard
wepin_flutter_storage: ^1.0.0 copied to clipboard

A Flutter package for integrating Wepin Storage, providing tools to manage and secure data efficiently.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:wepin_flutter_storage/wepin_flutter_storage.dart';

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

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

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

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

  @override
  State<StorageTestScreen> createState() => _StorageTestScreenState();
}

class _StorageTestScreenState extends State<StorageTestScreen> {
  final WepinStorage wepinStorage = WepinStorage(appId: "testApp");

  String selectedKey = StorageDataType.firebaseWepin; // 기본 선택 키
  final TextEditingController valueController = TextEditingController();
  String? storedValue;
  Map<String, dynamic>? allData;

  @override
  void initState() {
    super.initState();
    wepinStorage.init();
  }

  Future<void> saveData() async {
    final value = valueController.text;
    if (value.isEmpty) return;

    try {
      final parsedValue = _parseValueForKey(selectedKey, value);
      await wepinStorage.setLocalStorage(selectedKey, parsedValue);
      setState(() {
        storedValue = "✅ 저장됨!";
      });
    } catch (e) {
      setState(() {
        storedValue = "⚠️ 오류: ${e.toString()}";
      });
    }
  }

  Future<void> loadData() async {
    final data = await wepinStorage.getLocalStorage(selectedKey);
    setState(() {
      storedValue = data?.toString() ?? "데이터 없음!";
    });
  }

  Future<void> loadAllData() async {
    final data = await wepinStorage.getAllLocalStorage();
    setState(() {
      allData = data;
    });
  }

  Future<void> clearData() async {
    await wepinStorage.clearAllLocalStorage();
    setState(() {
      storedValue = "모든 데이터 삭제됨!";
      allData = null;
    });
  }

  /// **StorageDataType에 맞게 데이터 변환**
  dynamic _parseValueForKey(String key, String value) {
    switch (key) {
      case StorageDataType.firebaseWepin:
        return IFirebaseWepin.fromJson(jsonDecode(value));
      // case StorageDataType.wepinConnectUser:
      //   return WepinUser.fromJson(jsonDecode(value));
      case StorageDataType.userId:
      case StorageDataType.walletId:
        return value; // String
      // case StorageDataType.userStatus:
      //   return WepinUserStatus.fromJson(jsonDecode(value));
      case StorageDataType.userInfo:
        return jsonDecode(value); // JSON 데이터
      case StorageDataType.oauthProviderPending:
        return value.toLowerCase() == "true"; // bool 변환
      default:
        throw ArgumentError("지원되지 않는 키입니다.");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("WepinStorage 테스트 앱")),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text("📌 저장할 키 선택"),
            DropdownButton<String>(
              value: selectedKey,
              items: StorageDataType.all
                  .cast<String>() // 🔥 List<dynamic> -> List<String> 변환
                  .map<DropdownMenuItem<String>>((key) => DropdownMenuItem<String>(
                value: key,
                child: Text(key),
              ))
                  .toList(),
              onChanged: (key) {
                if (key != null) {
                  setState(() {
                    selectedKey = key;
                  });
                }
              },
            ),
            const SizedBox(height: 10),
            TextField(
              controller: valueController,
              decoration: const InputDecoration(
                labelText: "Value 입력",
                hintText: "JSON 형식 또는 올바른 데이터 입력",
              ),
            ),
            const SizedBox(height: 20),
            Row(
              children: [
                ElevatedButton(
                  onPressed: saveData,
                  child: const Text("저장"),
                ),
                const SizedBox(width: 10),
                ElevatedButton(
                  onPressed: loadData,
                  child: const Text("불러오기"),
                ),
                const SizedBox(width: 10),
                ElevatedButton(
                  onPressed: clearData,
                  child: const Text("전체 삭제"),
                ),
              ],
            ),
            const SizedBox(height: 20),
            Text("📌 저장된 값: ${storedValue ?? '없음'}"),
            const SizedBox(height: 10),
            ElevatedButton(
              onPressed: loadAllData,
              child: const Text("모든 데이터 불러오기"),
            ),
            const SizedBox(height: 10),
            Text("📌 모든 데이터: ${allData?.toString() ?? '없음'}"),
          ],
        ),
      ),
    );
  }
}
copied to clipboard
0
likes
130
points
112
downloads

Publisher

unverified uploader

Weekly Downloads

2024.09.20 - 2025.04.04

A Flutter package for integrating Wepin Storage, providing tools to manage and secure data efficiently.

Topics

#wepin #wepin-storage

Documentation

API reference

License

MIT (license)

Dependencies

flutter, flutter_secure_storage, plugin_platform_interface, wepin_flutter_common

More

Packages that depend on wepin_flutter_storage