0 purchases
reactivity
O Reactive é um gerenciador de estado dinâmico fundamentado em Singleton que permite o gerenciamento de
variáveis de forma global, orientada a condições, orientada a estados e principalmente de forma reativa.
A curva de aprendizado é muitocurta assim como a implementação, mas ainda assim é possível realizar
implementações mais robutas que resultam em um maior controle e em uma maior performance.
Features #
refresh(dynamic dependency):
Notifica um ouvinte específico para atualizar seu estado.
statusOf(String key):
Retorna o status de um Worker.
setStatus(String key, dynamic status):
Define o status de um Worker.
Getting started #
O Reactive não necessita de setup apenas instale o package e use onde precisar! :)
Usage #
enum ExampleStatus {
loading,
sucess,
fail,
}
class MyController {
List<String> myExamples = [];
int counter = 0;
myFunction() {
setStatus(ExampleStatus.loading);
return http.get("/examples")
.then((examples) {
myExamples = examples;
refreshStatus(ExampleStatus.sucess); //status da requisição alterado para sucesso e atualiza os componentes de tela reativos
}).catchError((err) {
refreshStatus(ExampleStatus.fail); //status da requisição alterado para falha e atualiza os componentes de tela reativos
});
}
count() {
counter++;
refresh(); //atualiza os componentes de tela reativos
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
MyController myController = MyController();
@override
void initState() {
super.initState();
myController.myFunction();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Reactive(() => Text("Counter: ${myController.counter}")), // deixa o texto reativo
),
body: ReactiveStatus<ExampleStatus>(// pertime que a tela seja reativa e que altere seus componentes com base no status
{
ExampleStatus.sucess: () => ExampleListView(items: myController.myExamples),// mostra a lista caso seja sucess
ExampleStatus.fail: () => const Text(" fail :( "),// mostra a erro caso seja fail
ExampleStatus.loading: () => const CircularProgressIndicator(),// mostra um ProgressIndicator caso seja loading
},
),
floatingActionButton: FloatingActionButton(
onPressed: myController.count,
child: const Icon(Icons.add),
),
);
}
}
copied to clipboard
Additional information #
Me chamo Felipe Kaian, sou o autor deste pacote, vocês podem me econtrar no LinkedIn ou
através do email [email protected], podem trazer melhorias, sugestões e feedbacks,
quanto mais melhor, espero que esse pacote ajude nossa comunidade Flutter a crescer cada vez mais!
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.