Olá,
O InheritedWidget não está atualizando a lista da tela inicial após adicionar uma nova tarefa. Notei que, ao criar uma nova tarefa e clicar no botão para aumentar o nível de outra tarefa já existente, a tela é atualizada, e a nova tarefa aparece.
- Chamada do form
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (contextNew) => FormScreen(taskScreen: context)
),
);
},
- Confirmação da tarefa no form_screen
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
//debugPrint(nameController.text);
//debugPrint(difficultyController.text);
//debugPrint(imageController.text);
TaskInherited.of(widget.taskScreen).newTask(
nameController.text,
imageController.text,
int.parse(difficultyController.text));
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Criando uma nova tarefa!'),
),
);
Navigator.pop(context);
}
},
child: const Text('Adicionar'))
- TaskInherited
import 'package:flutter/material.dart';
import 'package:nosso_primeiro_projeto/components/task.dart';
class TaskInherited extends InheritedWidget {
TaskInherited({
super.key,
required Widget child,
}) : super(child: child);
final List<Task> taskList = [
Task(
nome: 'Aprender Flutter',
linkUrl: 'assets/images/Logo_Flutter.png',
dificuldade: 2),
Task(
nome: 'Aprender React',
linkUrl: 'assets/images/Logo_React_Native.png',
dificuldade: 3),
Task(
nome: 'Aprender Kotlin',
linkUrl: 'assets/images/Logo_Kotlin.png',
dificuldade: 4),
];
void newTask(String name, String photo, int difficulty) {
taskList.add(Task(nome: name, linkUrl: photo, dificuldade: difficulty));
}
static TaskInherited of(BuildContext context) {
final TaskInherited? result =
context.dependOnInheritedWidgetOfExactType<TaskInherited>();
assert(result != null, 'No TaskInherited found in context');
return result!;
}
@override
bool updateShouldNotify(TaskInherited oldWidget) {
return oldWidget.taskList.length != taskList.length;
}
}