[Flutter]Riverpod、state_notifier、freezedを使って違うクラスのインスタンスの変数をそのまま違うクラスのインスタンスに入れる

ここでxxxという引数のものはxxxRegisterクラスとします。このxxxの中にxxx.name = 'aaa', xxx.id = 'bbb'などがあったとします。その値をXxxStateクラスのstateに用いたい時、まずxxx.toJson()して、その値をXxxStateの関数fromJson()の中に入れる。

import 'package:hooks_riverpod/all.dart';
import 'package:xxx/entity/xxx.dart';
import 'package:state_notifier/state_notifier.dart';

final xxxStateProvider =
   StateNotifierProvider((_) => XxxStateProvider());

class XxxStateProvider extends StateNotifier<XxxState> {
 XxxStateProvider() : super(const XxxState());
 
 void setState(xxx) {
   final xxxJson = xxx.toJson();
   XxxState xs = XxxState.fromJson(xxxJson);
   state = xs;
 }
}

もっとシンプルに書くと

void setState(patient) {
   state = PatientState.fromJson(patient.toJson());
 }

この記事が気に入ったらサポートをしてみませんか?