Persistance Local com SQLite em Flutter: Um Guia Definitivo

Persistência Local com SQLite em Flutter


INTRODUÇÃO
Você já se perguntou como armazenar e recuperar dados em um aplicativo de Flutter? A persistência local com SQLite é a solução perfeita para isso. Neste artigo, vamos explorar como funciona, por que é importante e como implementá-lo em seu próximo projeto.

Flutter

O QUE É PersistÊNCIA LOCAL COM SQUITE

A persistência local é a capacidade de armazenar e recuperar dados no device do usuário. O SQLite é uma biblioteca de banco de dados embutida no Android, que permite criar e gerenciar bases de dados locais. Em Flutter, o SQLite pode ser usado para implementar persistência local em seus aplicativos.

* Visão leiga: a persistência local com SQLite é uma maneira de armazenar e recuperar dados em seu aplicativo de forma eficiente e segura.
* Explicação técnica: O SQLite fornece uma API segura para criar, manipular e recuperar registros de uma base de dados locais. O flutter usa um pacote chamado sqflite que faz a conexão entre o SQlite e a API Flutter do flutter.
* Por que isso importa hoje: A persistência local com SQLite é fundamental para os aplicativos móveis, pois permite que eles armazenem e recuperem dados locais sem a necessidade de uma conexão com um servidor.

ENTENDA A FUNÇÃO E A UTILIDADE DO TEMA

A persistência local com SQLite é especialmente útil em aplicativos móveis, como:

* Aplicativos de jogos
* Aplicativos de finanças pessoais
* Aplicativos de música ou vídeo

Exemplo de um aplicativo que pode usar persistência local com SQLite

text
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';

class JogoDoTrabalho extends StatefulWidget {
  @override
  _JogoDoTrabalhoState createState() => _JogoDoTrabalhoState();
}

class _JogoDoTrabalhoState extends State<JogoDoTrabalho> {
  int pontuacao = 0;

  Future<void> começarJogo() async {
    final db = await abrirDatabase('trabalho.db');
    final row = Row(
      children: [
        Text('Pontuação: ${pontuacao}'),
        ElevatedButton(onPressed: () => aumentarPonte(), child: Text('Aumentar Pontuação'))
      ]
    );

    await db.insert(
      'Pontuacao',
      {
        'Pontuacao': pontuacao,
      },
    );
  }
}

void aumentarPontuaocao() async {
    final db = await abrirDatabase('trabalho.db');
    var row = await db.firstInsert;
    final Pontuacao resultRow =
        new Pontuacao(row[0]['Pontuacao']);
    print(resultRow.Pontuacao());
  }

Essa aplicação de jogos armazena a pontuação no banco local SQLite quando o usuário tocar um botão aumentar pontos, então é acessado em qualquer lugar do aplicativo. Existe muito mais com certeza.

GUIA COMPLETO E BEM ESTRUTURADO

* Como funciona

1. Instalar a biblioteca `sqflite`.

2. Criar uma base de dados e abrir um acesso a ela.

3. Criar ou recuperar os registros necessários.

4. Fechar o acesso da base de dados.
* Como aplicar:

1. Emprime um formulário com o código abaixo.

2. Alterne pelos resultados obtidos no passo 2

3. Armazene o código de retorno nos campos necessários, usando como chave o `id`, e armaze seus dados como se fossem tuplas simples na base de dados. Faça uma pesquisa em SQLite no site oficial sobre as tuplas.
* Como usar:

1. Abra a aplicação do Android

2. Execute as instruções.
* Como implementar:
-Instale a biblioteca SQlite no seu Flutter project

- Crie uma classe para encapsular o banco de dados. `SQLiteDB`

text
final sqflite.Database _database = await abrirDatabase('trabalho.db');
List<Trabalhos> get Trabalhose() {
    return _database
        .query('trabalho')
        .map((e) => Trabalhos.fromMap(e))
        .toList()
        ;
}
text
Future<void> gravarTrabalho(Trabalhos trabalhos, List<String> trabalhs) async {
  final sqflite.Database _database = await abrirDatabase('trabalho.db');
  return _database.insert('Trabalho', trabalhos.map((e) => e.trabalhos).toList()).then((_){} );
}

- Instala o pacote `sqflite` para flutter, instale usando a ferramenta o Package, com comando no terminal de comando

- Adiciona um atributo da propriedade do banco

text
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';

class TrabalhoModel {
  String id;
  String nome;
  int pontuacao;

  TrabalhoModel({required this.id, required this.nome, required this.pontuacao});

  factory Trabalhos.fromMap(Map<String,dynamic> json) => TrabalhoModel(
    nome: json['nome'],
    pontuacao : json['pontucao']
      ,
    id : json['id']
   )
}

* Como resolver problemas

Flutter

- O problema do SQL que você não entende?
- Verifique no site oficial se não conseguir

- Melhores práticas

- Use `future` para garantir que você execute todos os bancos com segurança. No código acima ele usou Future. Em outras palavras o code já resolve o problema, caso esteja sem segurança a classe do modelo não faria nada
- Passo a passo realista: A ideia é que um sistema, no momento de abrir o aplicativo armazene as suas coisas.

- Exemplos Reais

É exemplo simples com alguns bancos

text
class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SQLite Demo',
      home: Scaffold(
        appBar: AppBar(
          title: Text('SQLite Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  final db = await openDatabase("path/to/databases/mydb.db",
                      onCreate: (db, version) async {
                        return 'my db'; // create a database with one table
                      },
                      onUpgrade: (db, oldVersion, newVersion) {
                        if(oldVersion < 1)
                          return;
                        db.execute(
                            "CREATE TABLE IF NOT EXISTS my_table(id INTEGER PRIMARY KEY, data TEXT)"
                            );
                      });

                  final rows = await db.query('my_table');
                ButtonStyle(onPressed: MaterialButtonProps.onPressed, elevationColor : Colors.green),
                  child: Text('Abra a base de dados'))
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Comparação
A persistência local com SQLite é uma solução popular para armazenar e recuperar dados em aplicativos móveis. Outras alternativas incluem:

* Arquitetura cliente-servidor * Caching * API REST

Essas tecnologias têm suas vantagens e desvantagens, e a escolha da persistência local com SQLite depende do requisito específico do projeto.

Tendências Futuras

A tendência é utilizar o flutter SQlite como um sistema de armazenamento locais.

E é claro um bom conceito desenvolver algum tutorial com tutoriais práticos para tornar algo a ser realmente fácil e acessível ao seu público, mas é um tópico muito amplo então não foi possível fornecer algo tão extensivo que é capaz de satisfazer uma resposta total, isso já pode dar lugar a mais alguma ação de investigação sobre como implementar a tecnologia em seus casos ou se necessário criar mais conteúdo no tema persistência local com SQLite para se manter atualizado sobre o desenvolvimento de tal técnica e seus padrões.


Aprenda a criar aplicativos móveis com persistência local eficiente e escalável usando SQLite e Flutter. Descubra como armazenar e recuperar dados de forma segura e rápida.
Referências: persistência local, SQLite, Flutter, aplicativos móveis, armazenamento de dados, caixa de dados,

Flutter

Flutter é um framework UI multiplataforma do Google que permite criar aplicativos nativos para Android, iOS, Web e Desktop usando uma única base de código em Dart, oferecendo alto desempenho, widgets personalizáveis e uma experiência de desenvolvimento produtiva.