fnx-io / flutter_kostlivec

Pokus o recyklovatelny best-practice kostlivec. Velmi opinionated.
2 stars 2 forks source link

Discussion: persistent StateHolder #3

Open Tomucha opened 3 years ago

Tomucha commented 3 years ago

Co kdyby mel kazdy StateHolder prideleny svuj hive box:

https://github.com/hivedb/

A prubezne by se pri zmene ukladal? Volitelne by to slo vypnout ... Prijde mi to jako celkem mocny a zajimavy.

Co myslis, @petrblahos ?

petrblahos commented 3 years ago

Já jsem uvažoval i o tom, že při každé změně by se automaticky uložilo i to json. Ten hivedb vypadá dobře, ukládat menší kousky - ne všechna data naráz - by taky bylo lepší.

Jak by se to dalo udělat? Přes ChangeNotifier.addListener(saveMe) ?

Tomucha commented 3 years ago

Spíš jsem uvažoval o tom, že by to byla primo vlastnost StateHolderu. Kazdej state lze serializovat do JSONu a StateHolder vi presne kdy se meni, tak by se ulozil do hive box-u, kterej by dostal v konstruktoru. A taky by to v konstruktoru slo volitelne vypnout / neposkytnout tomu uloziste.

(Cca, mozna to nebude primo box, ale jen nejakej save callback ...)

petrblahos commented 3 years ago

Vypadá to, že nebude jednoduché zkombinovat built_value a Hive. Zkusil jsem to a neuspěl, Každopádně, zkusil jsem upravit kostlivce tak, aby serializoval to hive. Můžeš mrknout sem:

Mě je ukládání do hive rozhodně sympatičtější než do json, zároveň se mi líbí ten immutable state co měl kostlivec. Takže zatím nevím, co je lepší. Přemýšlím, jestli mi ten built_value přináší dost výhod na to, abych ho preferoval před tím hivem. Ještě si s tím asi trochu pohraju...

Tomucha commented 3 years ago

... a proc tam nechces placnout cely ten objekt naraz? IMHO je to nejlepsi cesta - rozebrat to na kousky a pak zase slozit je jen cesta k prusvihu, psat i nacitat en-bloc, rekl bych. Asi se t nehodi na stav kde budes mit 1000 radku neceho, ale v takovejch pripadech by se do toho state holderu mohl plugnou custom "saver" a "loader" ... treba.

On Sat, Feb 13, 2021 at 3:20 PM petrblahos notifications@github.com wrote:

Vypadá to, že nebude jednoduché zkombinovat built_value a Hive. Zkusil jsem to a neuspěl, Každopádně, zkusil jsem upravit kostlivce tak, aby serializoval to hive. Můžeš mrknout sem:

-

https://github.com/petrblahos/flutter_kostlivec/blob/hive_db/HIVE.md

https://github.com/petrblahos/flutter_kostlivec/tree/hive_db

Mě je ukládání do hive rozhodně sympatičtější než do json, zároveň se mi líbí ten immutable state co měl kostlivec. Takže zatím nevím, co je lepší. Přemýšlím, jestli mi ten built_value přináší dost výhod na to, abych ho preferoval před tím hivem. Ještě si s tím asi trochu pohraju...

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/fnx-io/flutter_kostlivec/issues/3#issuecomment-778626093, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAUIKWG7FOK4PBNXP7UNP7DS62DD3ANCNFSM4VQFWGMA .

-- S pozdravem,

Tomáš Zvěřina

fnx.io | www.m-atelier.cz | backendisti.cz | dartlang.cz

petrblahos commented 3 years ago

Asi se nechápeme. Teď tam plácám celej objekt naráz.

Tomucha commented 3 years ago

Aha, ok. No budu se na to muset podivat teda. Proc ze se ti nedari zkombinovat Hive a built_value? Kazdej built_value se da prece zeserializovat do Map-y a zpet, nebo co to?

On Mon, Feb 15, 2021 at 7:51 AM petrblahos notifications@github.com wrote:

Asi se nechápeme. Teď tam plácám celej objekt naráz.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/fnx-io/flutter_kostlivec/issues/3#issuecomment-778992543, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAUIKWCH5JZCD6UZGCAZ6KDS7C76LANCNFSM4VQFWGMA .

-- S pozdravem,

Tomáš Zvěřina

fnx.io | www.m-atelier.cz | backendisti.cz | dartlang.cz

petrblahos commented 3 years ago

Aha, tak takhle. Využít built_value serializer a nedělat adapter pro ten ukládanej objekt, ale místo toho uložit tu serializovanou hodnotu. Jo?

Tomucha commented 3 years ago

No jo, nic jinyho snad ani prave nejde, sem myslel :-) A prijde mi to v poradku - ulozeni i nacteni je diky tomu "atomicka" operace a nemuze dojit k nekonzistenci.

On Mon, Feb 15, 2021 at 9:27 AM petrblahos notifications@github.com wrote:

Aha, tak takhle. Využít built_value serializer a nedělat adapter pro ten ukládanej objekt, ale místo toho uložit tu serializovanou hodnotu. Jo?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/fnx-io/flutter_kostlivec/issues/3#issuecomment-779047716, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAUIKWELJQ57A32G5YO3SDLS7DLGNANCNFSM4VQFWGMA .

-- S pozdravem,

Tomáš Zvěřina

fnx.io | www.m-atelier.cz | backendisti.cz | dartlang.cz

petrblahos commented 3 years ago

Tak tohle je opravdu mnohem jednodušší:

https://github.com/petrblahos/flutter_kostlivec/tree/hive_db_serialize_built

Tomucha commented 3 years ago

No jo. Akorat nevim, jesli opravdu predavat stateholderu jen "jmeno boxu" - tim vznika prodleva, mezi existujici instanci stateholderu a spravnou hodnotou v ni - jestli by nemel dostavat box radeji uz otevrenej a fakt pripravenej. Aby se nikdy nestalo ze na nej sahas a jeste neni uplne "ready".

On Tue, Feb 16, 2021 at 11:24 AM petrblahos notifications@github.com wrote:

Tak tohle je opravdu mnohem jednodušší:

https://github.com/petrblahos/flutter_kostlivec/tree/hive_db_serialize_built

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/fnx-io/flutter_kostlivec/issues/3#issuecomment-779739530, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAUIKWD3I6BYWBTQSF6OZQLS7JBUXANCNFSM4VQFWGMA .

-- S pozdravem,

Tomáš Zvěřina

fnx.io | www.m-atelier.cz | backendisti.cz | dartlang.cz

petrblahos commented 3 years ago

Já jsem když tak spíš myslel udělat mechanizmus, abych si na to mohl počkat. Abych řekl pravdu, zatím nevím, jak to nejlíp udělat - konstruktor nemůže být async.

On Tue, Feb 16, 2021 at 11:38 AM Tomáš Zvěřina notifications@github.com wrote:

No jo. Akorat nevim, jesli opravdu predavat stateholderu jen "jmeno boxu" - tim vznika prodleva, mezi existujici instanci stateholderu a spravnou hodnotou v ni - jestli by nemel dostavat box radeji uz otevrenej a fakt pripravenej. Aby se nikdy nestalo ze na nej sahas a jeste neni uplne "ready".

On Tue, Feb 16, 2021 at 11:24 AM petrblahos notifications@github.com wrote:

Tak tohle je opravdu mnohem jednodušší:

https://github.com/petrblahos/flutter_kostlivec/tree/hive_db_serialize_built

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub < https://github.com/fnx-io/flutter_kostlivec/issues/3#issuecomment-779739530 , or unsubscribe < https://github.com/notifications/unsubscribe-auth/AAUIKWD3I6BYWBTQSF6OZQLS7JBUXANCNFSM4VQFWGMA

.

-- S pozdravem,

Tomáš Zvěřina

fnx.io | www.m-atelier.cz | backendisti.cz | dartlang.cz

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/fnx-io/flutter_kostlivec/issues/3#issuecomment-779749246, or unsubscribe https://github.com/notifications/unsubscribe-auth/AATNXD3UV4H6YVKPOQARTWTS7JDK5ANCNFSM4VQFWGMA .

-- https://blahos.com/ https://traceability.cz/

Tomucha commented 3 years ago

IMHO v launcher.dart si vsechno asynchronne pripravit a pouzit mirne jinej konstruktor provideru - takovej co mu to das uz hotovy. https://pub.dev/documentation/provider/latest/provider/ChangeNotifierProvider/ChangeNotifierProvider.value.html

Rekl bych nejprimocarejsi.

On Tue, Feb 16, 2021 at 11:49 AM petrblahos notifications@github.com wrote:

Já jsem když tak spíš myslel udělat mechanizmus, abych si na to mohl počkat. Abych řekl pravdu, zatím nevím, jak to nejlíp udělat - konstruktor nemůže být async.

On Tue, Feb 16, 2021 at 11:38 AM Tomáš Zvěřina notifications@github.com wrote:

No jo. Akorat nevim, jesli opravdu predavat stateholderu jen "jmeno boxu" - tim vznika prodleva, mezi existujici instanci stateholderu a spravnou hodnotou v ni - jestli by nemel dostavat box radeji uz otevrenej a fakt pripravenej. Aby se nikdy nestalo ze na nej sahas a jeste neni uplne "ready".

On Tue, Feb 16, 2021 at 11:24 AM petrblahos notifications@github.com wrote:

Tak tohle je opravdu mnohem jednodušší:

https://github.com/petrblahos/flutter_kostlivec/tree/hive_db_serialize_built

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <

https://github.com/fnx-io/flutter_kostlivec/issues/3#issuecomment-779739530

, or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AAUIKWD3I6BYWBTQSF6OZQLS7JBUXANCNFSM4VQFWGMA

.

-- S pozdravem,

Tomáš Zvěřina

fnx.io | www.m-atelier.cz | backendisti.cz | dartlang.cz

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub < https://github.com/fnx-io/flutter_kostlivec/issues/3#issuecomment-779749246 , or unsubscribe < https://github.com/notifications/unsubscribe-auth/AATNXD3UV4H6YVKPOQARTWTS7JDK5ANCNFSM4VQFWGMA

.

-- https://blahos.com/ https://traceability.cz/

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/fnx-io/flutter_kostlivec/issues/3#issuecomment-779755500, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAUIKWF2OOOYRSOYURVDJOTS7JEUVANCNFSM4VQFWGMA .

-- S pozdravem,

Tomáš Zvěřina

fnx.io | www.m-atelier.cz | backendisti.cz | dartlang.cz