'LateInitializationError: Field '_children@51042623' has not been initialized
[![LateInitializationError: Field '_children@51042623' has not been initialized][1]]
I'm having this problem when i add items to a List from page 2 to page 1 [1]: https://i.stack.imgur.com/LzmDY.png I'm using SQLITE to create db for the list, If i run the app again it works normally. How can i solve this problem? I searched on this website and i found one post but i tried to follow the step and i still can't solve.
code of page 2
import 'dart:convert';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mood3/helper/AnotacaoHelper.dart';
import 'package:mood3/main.dart';
import 'package:mood3/model/Diario.dart';
import 'package:mood3/telas/RecebeDados.dart';
import 'package:path_provider/path_provider.dart';
import 'package:toast/toast.dart';
class Escrita extends StatefulWidget {
@override
State<Escrita> createState() => _EscritaState();
}
class _EscritaState extends State<Escrita> {
TextEditingController _controllerTitulo = TextEditingController();
TextEditingController _controllerTexto = TextEditingController();
var _db = AnotacaoHelper();
List<Diario> _diarioupdate = <Diario>[];
_recuperarDiario()async{
List diarioRecuperado = await _db.recuperarDiario();
List<Diario> diariotemporario = <Diario>[];
for ( var item in diarioRecuperado){
Diario diario = Diario.fromMap(item);
diariotemporario.add(diario);
}
setState((){
_diarioupdate = diariotemporario;
});
print("Lista anotacoes : "+ diarioRecuperado.toString() );
}
_salvarAnotacao() async {
String titulo = _controllerTitulo.text;
String texto = _controllerTexto.text;
Diario diario = Diario(titulo, texto, DateTime.now().toString());
int? resultado = await _db.salvarDiario(diario);
print("salvar anotacao: " + resultado.toString());
_controllerTitulo.clear();
_controllerTexto.clear();
_recuperarDiario();
}
@override
Widget build(BuildContext context) {
ToastContext().init(context);
GlobalKey<FormState>myFormKey=GlobalKey<FormState>();
return WillPopScope(
onWillPop: () async => false,
child: Scaffold(
key: myFormKey,
appBar: AppBar(
automaticallyImplyLeading: false,
title: InkWell(
child: Image.asset("icones/mood.jpg"),
onTap: ()=> Navigator.push(context, MaterialPageRoute(builder: (context) => TelaPrincipal())),
),
actions: [
IconButton(
icon: Image.asset("testeimagem/2.png"),
onPressed: (){
print("acao: chat");
},
),
IconButton(
icon: Icon(Icons.account_circle),
onPressed: (){
print("acao: account");
},
),
],
backgroundColor: Colors.black,
),
body: Center(
child: SingleChildScrollView(
child:Column(
children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: TextField(
keyboardType: TextInputType.multiline,
controller: _controllerTitulo,
autofocus: true,
decoration: InputDecoration(
hintText: "Diary Title",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
borderSide: BorderSide.none,
),
filled: true,
fillColor: Colors.blueGrey,
),
)),
Padding(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: TextField(
keyboardType: TextInputType.multiline,
controller: _controllerTexto,
maxLines: null,
decoration: InputDecoration(
hintText: "Diary Text",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
borderSide: BorderSide.none,
),
filled: true,
fillColor: Colors.blueGrey,
),
),
),
],
),),
),
floatingActionButton: SpeedDial(
icon: CupertinoIcons.pen,
backgroundColor: Colors.black,
overlayColor: Colors.black,
children: [
SpeedDialChild(
child: Icon(CupertinoIcons.arrow_left),
backgroundColor: Colors.white,
label: "Back",
onTap: () {
Navigator.pop(context);
Navigator.push(context, MaterialPageRoute(builder: (context) => RecebeDados() ));
}
),
SpeedDialChild(
child: Icon(CupertinoIcons.check_mark),
backgroundColor: Colors.white,
label: "Save",
onTap: () {
_salvarAnotacao();
Navigator.of(context,rootNavigator: true).pop();
Navigator.push(context, MaterialPageRoute(builder: (context) => RecebeDados() ));
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
backgroundColor: Colors.green,
content: Text('Diary Saved')));
},
),
SpeedDialChild(
child: Icon(CupertinoIcons.add),
backgroundColor: Colors.white,
label: "Post",
onTap: () {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
backgroundColor: Colors.green,
content: Text('You Diary has been published successfully'),
));
Navigator.pop(context);
}
),
]
),
),);
}
}
code of page 1
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:line_icons/line_icons.dart';
import 'package:mood3/helper/AnotacaoHelper.dart';
import 'package:mood3/main.dart';
import 'package:mood3/model/Diario.dart';
import 'package:mood3/telas/Diary.dart';
import 'package:mood3/widget/DismissibleWidget.dart';
import 'dart:convert';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:mood3/telas/escrita.dart';
class RecebeDados extends StatefulWidget {
@override
State<RecebeDados> createState() => _RecebeDadosState();
}
class _RecebeDadosState extends State<RecebeDados> {
Map<String,dynamic> _ultimaTarefaRemovida = Map();
var _db = AnotacaoHelper();
List<Diario> _diarioupdate2 = <Diario>[];
_recuperarDiario()async{
List diarioRecuperado = await _db.recuperarDiario();
List<Diario> diariotemporario = <Diario>[];
for ( var item in diarioRecuperado){
Diario diario = Diario.fromMap(item);
diariotemporario.add(diario);
}
setState((){
_diarioupdate2 = diariotemporario;
});
print("Lista anotacoes : "+ diarioRecuperado.toString() );
print("Lista anotacoes : "+ _diarioupdate2.toString() );
print("Lista anotacoes : " + diariotemporario.toString());
}
@override
void initState() {
super.initState();
_recuperarDiario();
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async => false,
child: Scaffold(
floatingActionButtonLocation: FloatingActionButtonLocation.endDocked,
floatingActionButton: SpeedDial(
animatedIcon: AnimatedIcons.menu_close,
backgroundColor: Colors.black,
icon: CupertinoIcons.pencil,
overlayColor: Colors.black,
children: [
SpeedDialChild(
child: Icon(CupertinoIcons.arrow_left),
backgroundColor: Colors.white,
label: "Back",
onTap: () {
Navigator.pop(context);
Navigator.push(context, MaterialPageRoute(builder: (context) => TelaPrincipal() ));
},
),
SpeedDialChild(
child: Icon(CupertinoIcons.add),
backgroundColor: Colors.white,
label: "Add",
onTap: () {
Navigator.pop(context);
Navigator.push(context, MaterialPageRoute(builder: (context) => Escrita() ));
}
),
SpeedDialChild(
child: Icon(CupertinoIcons.delete),
backgroundColor: Colors.white,
label: "Remove",
onTap: () {
},
),
]
),
body: Column(
children: [
Expanded(child:
ListView.separated(
itemCount: _diarioupdate2.length,
separatorBuilder: (context,index)=> Divider(),
itemBuilder: (context,index){
final diario = _diarioupdate2[index];
return Card(
child: DismissibleWidget(
child: buildListTile(diario),
),
);
},
),
),
],
)
),
);
}
Widget buildListTile(Diario diario) => ListTile(
contentPadding: EdgeInsets.symmetric(
horizontal: 16, vertical: 16,
),
leading: CircleAvatar(
radius: 28,
backgroundImage: AssetImage("icones/m.png"),
),
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(diario.titulo!,
style: TextStyle(
fontWeight: FontWeight.bold),
),
const SizedBox(height: 4),
Text("${diario.data} - ${diario.mensagem}")
],
),
);
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
