Flutter로 Web에서 입력했던 내용을 종료하고 다시 실행 시 데이터를 꺼내오고 싶음.
Debug Web에서 데이터를 꺼내오기 위한 사전 처리 --web-port만 정해주면 된다.
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.15
pub에서 추가.
import 'package:shared_preferences/shared_preferences.dart';
class SharedPreferencesSingleton {
static late final _prefs;
static final SharedPreferencesSingleton _sharedPreferences = SharedPreferencesSingleton._internal();
factory SharedPreferencesSingleton() => _sharedPreferences;
SharedPreferencesSingleton._internal() {
_initialize();
}
Future<void> _initialize() async {
_prefs = await SharedPreferences.getInstance();
}
static void setValue<T>(String key, Object value) {
switch(T) {
case int :
_prefs.setInt(key, value);
break;
case bool :
_prefs.setBool(key, value);
break;
case String :
_prefs.setString(key, value);
break;
}
}
static T? getValue<T>(String key) {
switch(T) {
case int :
return _prefs.getInt(key);
case bool :
return _prefs.getBool(key);
case String :
return _prefs.getString(key);
}
return null;
}
static void removeValue(String key) {
_prefs.remove(key);
}
}
귀찮아서 몇가지 기능만 대충 만들었음.
void main() {
_initialize();
runApp(const MyApp());
}
void _initialize() {
SharedPreferencesSingleton();
}
Main
UserInformation.isLoginSuccess = true,
UserInformation.accessToken = "${value.data["accessToken"]}",
if(isRemember) {
SharedPreferencesSingleton.setValue<String>("email", email),
SharedPreferencesSingleton.setValue<bool>("isRemember", isRemember),
} else {
SharedPreferencesSingleton.removeValue("email"),
SharedPreferencesSingleton.removeValue("isRemember"),
},
로그인 시, 해당 값이 있으면 저장 없으면 삭제
@override
@mustCallSuper
void initState() {
super.initState();
if(!isServiceInitialize) {
loginService = LoginService(context);
}
final bool? sharedRemember = SharedPreferencesSingleton.getValue<bool>("isRemember");
rememberValue = sharedRemember == null ? false : true;
WidgetsBinding.instance.addPostFrameCallback((_) {
//저장 상태.
if(rememberValue) {
final String? sharedEmail = SharedPreferencesSingleton.getValue<String>("email");
if(sharedEmail != null) {
_emailTextEditController.text = sharedEmail;
}
}
});
}
login screen
결과
'Flutter' 카테고리의 다른 글
06. Flutter Future build 이벤트 방지 (0) | 2022.09.19 |
---|---|
05. Flutter build 종료 후 이벤트 (0) | 2022.09.16 |
03. Fultter Datatable 사용 (0) | 2022.09.07 |
02. Flutter Dio 사용법 (0) | 2022.08.28 |
01. 플러터 설치 (0) | 2021.07.26 |