wepin_flutter_storage 1.0.0
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