[Getx] Flutter Getx: initial value of obs variable set to null
페이지 정보
작성자 sbLAB 댓글 0건 조회 1,439회 작성일 23-01-28 19:57본문
Flutter - Null Safety
https://kkangsnote.tistory.com/98
getx/documentation/kr_KO/state_management.md
https://github.com/jonataslaw/getx/blob/master/documentation/kr_KO/state_management.md
https://stackoverflow.com/questions/68125824/flutter-getx-initial-value-of-obs-variable-set-to-null
Rx : not nullable (null 초기화 불가) <= Non-Nullable
Rxn : nullable (null 초기화 가능) <= null-safety
//For non null-safe (pre Dart 2.12), you can declare your observable variables like this:
final someVariable = Rx<Type>();
//For example:
final someString = Rx<String>();
final someNumber = Rx<int>();
//And for null-safety (Dart 2.12 or later), Just use Rxn<Type> instead of Rx<Type>.
//For example:
final someModel = Rxn<Model>();
final someString = Rxn<String>();
final someNumber = Rxn<int>();
For example
[SettingsModel]
//SettingModel
class SettingModel {
String? email;
int level;
int detail;
int mode;
bool vibration;
bool notification;
bool keeplogin;
SettingModel({
this.email,
required this.level,
required this.detail,
required this.mode,
required this.vibration,
required this.notification,
required this.keeplogin,
});
}
Rxn 으로 nullable 초기화 하는 경우
class SettingController extends GetxController {
late SettingModelRepository _settingModelRepository;
var settingModel = Rxn<SettingModel>();
@override
void onInit() {
super.onInit();
_settingModelRepository = SettingModelRepository();
}
//readSettingModel
SettingModel readSettingModel() {
var resultRead = _settingModelRepository.readSettingModel();
return settingModel(resultRead)!;
}
//writeSettingModel
void writeSettingModel(SettingModel settingModel) {
_settingModelRepository.wrtieSettingModel(settingModel);
}
}
Rx 으로 초기화 하는 경우
class SettingController extends GetxController {
late SettingModelRepository _settingModelRepository;
var settingModel = Rx<SettingModel>(SettingModel(
email: 'email',
level: 1,
detail: 1,
mode: 1,
vibration: true,
notification: true,
keeplogin: true));
@override
void onInit() {
super.onInit();
_settingModelRepository = SettingModelRepository();
}
//readSettingModel
SettingModel readSettingModel() {
var resultRead = _settingModelRepository.readSettingModel();
return settingModel(resultRead);
}
//writeSettingModel
void writeSettingModel(SettingModel settingModel) {
_settingModelRepository.wrtieSettingModel(settingModel);
}
}
[개선] SettingModel (환경설정 데이타모델)에 기본값 설정 후 Rx 사용
//SettingModel
class SettingModel {
String? email;
int level;
int detail;
int mode;
bool vibration;
bool notification;
bool keeplogin;
SettingModel({
this.email='email',
this.level=1,
this.detail=1,
this.mode=1,
this.vibration=true,
this.notification=true,
this.keeplogin=true,
});
}
class SettingController extends GetxController {
late SettingModelRepository _settingModelRepository;
var settingModel = Rx<SettingModel>(SettingModel());
@override
void onInit() {
super.onInit();
_settingModelRepository = SettingModelRepository();
}
//readSettingModel
SettingModel readSettingModel() {
var resultRead = _settingModelRepository.readSettingModel();
return settingModel(resultRead);
}
//writeSettingModel
void writeSettingModel(SettingModel settingModel) {
_settingModelRepository.wrtieSettingModel(settingModel);
}
}
- 이전글[Flutter] Json 데이터를 GetX를 활용하여 list view, detail view 만들기 23.01.30
- 다음글[Flutter + Dart] upgrade 23.01.19
댓글목록
등록된 댓글이 없습니다.