/MobX_Flutter_ToDoList

Projeto em Flutter de uma lista de tarefa com Login usando o MobX para gerência de estado

Primary LanguageDart

#mobX

Aplicativo simples de uma lista de tarefas com Login

mobile_todoListMobxLogin tela_mobX_todolistLista

Gerência de estado: mobX

Depêndencias:


mobx : O MobX é uma biblioteca de gerenciamento de estado que simplifica a conexão dos dados reativos do seu aplicativo com a interface do usuário.

flutter_mobx : Fornece o Observerwidget que escuta observáveis e recria automaticamente as alterações.

Dev depêndencias:


mobx_codegen : Gerador de código para MobX que adiciona suporte para anotar seu código com @observable, @computed, @action e também criando classes Store.

build_runner : Gera o arquivo mobX.


Para gerar os arquivos mobX com o build_runner: (TERMINAL)

flutter packages pub run build_runner watch

Caso dê conflito, tente usar isso antes

flutter packages pub run build_runner build --delete-conflicting-outputs



Gerências de estados usadas no App

Login:

Validar dados do email com um RegEx

Validar dados do password só aceitando pelo menos 6 dígitos

Botão de Login só fica ativo se os dois campos estiverem válidos

Quando aperta o botão de Login, aparece um CircularProgress para depois ir para a tela de tarefas



Lista de tarefas:

Adiciona sempre no topo da lista

Não aceitar o titulo da lista como vazio

Quando criar nova tarefa, zerar o campo de add tarefas

Botão de 'add' só aparecer se o campo não tiver vazio

Criando ObservableList para que o mobX consiga notar alterações dentro da Lista

Marcar como lido quando clicar na tarefa - deixando a tarefa riscada e cinza

Loggout com provider global apenas para exemplo, sem utilidade nesse App


Criar um gerador de código mobX automático

Vai em: File -> Settings -> Live Templates -> Flutter -> +

Abbreviation: 'NOME DESEJADO PARA CRIAR'

Template Text:

import 'package:mobx/mobx.dart

part '$FILENAME$.g.dart';

class $CLASSNAME$ = _$CLASSNAME$ with _$$$CLASSNAME$;

abstract class _$CLASSNAME$ with Store {



}

vai em Edit variables e poe:

NAME: FILENAME -- EXPRESSION: fileNameWithoutExtension() -- skip if defined [x] NAME: CLASSNAME -- EXPRESSION: capitalize(camelCase(FILENAME)) -- skip if defined [x]