2017-07-19 7 views
1

私はReduxを使用しているので、アクションがディスパッチされるたびに新しい状態を作成する必要があります。ダート不変性

私が??を使用し、パラメータを指定しないと、値はnullに設定されるので、それは私が望むものではありません。 ??=を使用すると、オブジェクトのプロパティが新しい値に割り当てられます。 しかし、明示的にパラメータをnullに設定すると、nullに設定することはできません。

私はこの問題を数日前から回避しています。誰かが私を助けることができれば素晴らしいだろう。

Btw私はFlutterアプリケーションをhttps://github.com/alexeieleusis/greencatとReduxライブラリとしてビルドしています。

答えて

1

nullが明示的にオプションのパラメータに渡されたのか、全くパラメータが渡されなかったのかを区別する方法はありません。

あなたがそうでなければ、別のものを見つける必要があるでしょう、

someDummyValueは A内のすべてのフィールドが finalある場合、これだけの作品は

static const someDummyValue = const A.dummy(); 

のようにどこかで定義する必要があります

AuthState.copy({A a = someDummyValue /* other parameters}) { 
    AuthState state = new AuthState(
    a == someDummyValue ? this.a : a, 
    /* similar for other parameters */ 
) 

ようなものを使用することができます一意にする方法はsomeDummyValueです。

私は、built_valueパッケージを使用して、ビルダーとシリアライザで不変クラスのコードを生成することをお勧めします。