Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida ao montar o código

Bom dia, ao chegar no where não está localizando, o que notei é que tem algumas diferenças no meu código, pois o android studio completa automaticamente algumas situações para mim!

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

import 'package:projeto_flutter/data/database.dart';
import 'package:sqflite/sqflite.dart';

import '../components/tasks.dart';

class TaskDao {
  static const String tableSql = 'CREATE TABLE $_tablename('
      '$_name TEXT, '
      '$_difficulty INTEGER, '
      '$_image TEXT)';

  static const String _tablename = 'taskTable';
  static const String _name = 'name';
  static const String _difficulty = 'difficulty';
  static const String _image = 'image';
  }

save(Task tarefa) async {
  final Database bancoDeDados = await getDatabase();
  var itemExists = await find(tarefa.nome);
  Map<String, dynamic> taskMap = toMap(tarefa);
  if (itemExists.isEmpty) {
    return await bancoDeDados.insert(TaskDao._tablename, taskMap);
  } else {
    return await bancoDeDados.update(
      TaskDao._tablename,
      taskMap,
      where: '$_nome = ?',
      whereArgs: [tarefa.nome],
    );
  }
}

  Map<String, dynamic> toMap(Task tarefa){
    final Map<String, dynamic> mapaDetarefas = Map();
    mapaDetarefas[TaskDao._name] = tarefa.nome;
    mapaDetarefas[TaskDao._difficulty] = tarefa.dificuldade;
    mapaDetarefas[TaskDao._image] = tarefa.foto;
    return mapaDetarefas;

  }

Future<List<Task>> findAll() async {
  final Database bancoDeDados = await getDatabase();
  final List<Map<String, dynamic>> result =
      await bancoDeDados.query(TaskDao._tablename);
  return toList(result);
}

List<Task> toList(List<Map<String, dynamic>> listaDeTarefas) {
  final List<Task> tarefas = [];
  for (Map<String, dynamic> linha in listaDeTarefas) {
    final Task tarefa = Task(linha[TaskDao._name], linha[TaskDao._image],
        linha[TaskDao._difficulty]);
    tarefas.add(tarefa);
  }
  return tarefas;
}

Future<List<Task>> find(String nomeDaTarefa) async {
  final Database bancoDeDados = await getDatabase();
  final List<Map<String, dynamic>> result = await bancoDeDados
      .query(TaskDao._tablename, where: '$_name = ?', whereArgs: [nomeDaTarefa]);
  return toList(result);
}

delete(String nomeDaTarefa) async {}


3 respostas
solução!

Resolvido.

Se puder postar a solução seria uma boa.

Eu havia esquecido de fechar o TaskDao, assim não encontrava o _name. No final o código ficou assim:

import 'package:projeto_flutter/data/database.dart';
import 'package:sqflite/sqflite.dart';

import '../components/tasks.dart';

class TaskDao {
  static const String tableSql = 'CREATE TABLE $_tablename('
      '$_name TEXT, '
      '$_difficulty INTEGER, '
      '$_image TEXT)';

  static const String _tablename = 'taskTable';
  static const String _name = 'name';
  static const String _difficulty = 'difficulty';
  static const String _image = 'image';

  save(Task tarefa) async {
    final Database bancoDeDados = await getDatabase();
    var itemExists = await find(tarefa.nome);
    Map<String, dynamic> taskMap = toMap(tarefa);
    if (itemExists.isEmpty) {
      return await bancoDeDados.insert(TaskDao._tablename, taskMap);
    } else {
      return await bancoDeDados.update(
        TaskDao._tablename,
        taskMap,
        where: '$_name = ?',
        whereArgs: [tarefa.nome],
      );
    }
  }

  Map<String, dynamic> toMap(Task tarefa) {
    final Map<String, dynamic> mapaDetarefas = Map();
    mapaDetarefas[TaskDao._name] = tarefa.nome;
    mapaDetarefas[TaskDao._difficulty] = tarefa.dificuldade;
    mapaDetarefas[TaskDao._image] = tarefa.foto;
    return mapaDetarefas;
  }

  Future<List<Task>> findAll() async {
    final Database bancoDeDados = await getDatabase();
    final List<Map<String, dynamic>> result =
        await bancoDeDados.query(TaskDao._tablename);
    return toList(result);
  }

  List<Task> toList(List<Map<String, dynamic>> listaDeTarefas) {
    final List<Task> tarefas = [];
    for (Map<String, dynamic> linha in listaDeTarefas) {
      final Task tarefa = Task(linha[TaskDao._name], linha[TaskDao._image],
          linha[TaskDao._difficulty]);
      tarefas.add(tarefa);
    }
    return tarefas;
  }

  Future<List<Task>> find(String nomeDaTarefa) async {
    final Database bancoDeDados = await getDatabase();
    final List<Map<String, dynamic>> result = await bancoDeDados.query(
        TaskDao._tablename,
        where: '$_name = ?',
        whereArgs: [nomeDaTarefa]);
    return toList(result);
  }

  delete(String nomeDaTarefa) async {
    final Database bancoDeDados = await getDatabase();
    return bancoDeDados.delete(
      _tablename,
      where: '$_name',
      whereArgs: [nomeDaTarefa],
    );
  }
}