[Getx] Flutter Getx: initial value of obs variable set to null > Flutter/Dart/Node

본문 바로가기
사이트 내 전체검색

Flutter/Dart/Node

[Getx] Flutter Getx: initial value of obs variable set to null

페이지 정보

작성자 sbLAB 댓글 0건 조회 2,654회 작성일 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);
      }
    }
 




댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
307
어제
356
최대
1,279
전체
211,670

그누보드5
Copyright © sebom.com All rights reserved.