i get an UnimplementedError in my flutter app and i have not seen any other questions that really helps me with my problem thats why i ask.
i get an UnimplemetedError but i don't know how to fix it properly without having other errors. like "uid is undefined"
so can anyone help me with this error and make the app error free
thank you very much :)
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:hetmaantje/utils1/colors.dart';
class todolist extends StatefulWidget {
@override
_todolistState createState() => _todolistState();
}
class _todolistState extends State<todolist> {
String todoTitle = "";
createTodos() {
@override
final FirebaseAuth auth = FirebaseAuth.instance;
final User? user = auth.currentUser;
final uid = user?.uid;
DocumentReference documentReference =
FirebaseFirestore.instance.collection(uid!).doc(todoTitle);
//Map
Map<String, String> todos = {"todoTitle": todoTitle};
documentReference.set(todos).whenComplete(() {
print("$todoTitle created");
});
}
deleteTodos(item) {
@override
final User? user = auth.currentUser;
final uid = user?.uid;
DocumentReference documentReference =
FirebaseFirestore.instance.collection(uid!).doc(item);
documentReference.delete().whenComplete(() {
print("$item deleted");
});
}
@override
final FirebaseAuth auth = FirebaseAuth.instance;
@override
void inputData() {
final User? user = auth.currentUser;
final uid = user?.uid;
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("To-do lijst"),
),
floatingActionButton: FloatingActionButton(
backgroundColor: hexStringToColor("fe98a8"),
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
backgroundColor: hexStringToColor("fe98a8"),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)),
title: Text("Voeg een nieuwe taak toe"),
content: TextField(
onChanged: (String value) {
todoTitle = value;
},
),
actions: <Widget>[
TextButton(
onPressed:() {
createTodos();
Navigator.of(context).pop();
},
child: Text("Add"))
],
);
});
},
child: Icon(
Icons.add,
color: Colors.white,
),
),
body: StreamBuilder(
stream: FirebaseFirestore.instance.collection(uid!).snapshots(),
builder: (context, snapshots) {
if (snapshots.hasData) {
return ListView.builder(
shrinkWrap: true,
itemCount: snapshots.data?.docs.length,
itemBuilder: (context, index) {
DocumentSnapshot documentSnapshot =
snapshots.data!.docs[index];
return Dismissible(
onDismissed: (direction) {
deleteTodos(documentSnapshot["todoTitle"]);
},
key: Key(documentSnapshot["todoTitle"]),
child: Card(
elevation: 4,
margin: EdgeInsets.all(8),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)),
child: ListTile(
title: Text(documentSnapshot["todoTitle"]),
trailing: IconButton(
icon: Icon(
Icons.delete,
color: Colors.red,
),
onPressed: () {
deleteTodos(documentSnapshot["todoTitle"]);
}),
),
));
});
} else {
return Align(
alignment: FractionalOffset.bottomCenter,
child: CircularProgressIndicator(),
);
}
}),
);
}}
@override
Widget build(BuildContext context) {
// TODO: implement build
throw UnimplementedError();
}
}
CodePudding user response:
There are format issue on your code. You need to add override over build method and remove bottom build method and close the function properly.
class todolist extends StatefulWidget {
@override
_todolistState createState() => _todolistState();
}
class _todolistState extends State<todolist> {
String todoTitle = "";
createTodos() {
final FirebaseAuth auth = FirebaseAuth.instance;
final User? user = auth.currentUser;
final uid = user?.uid;
DocumentReference documentReference =
FirebaseFirestore.instance.collection(uid!).doc(todoTitle);
//Map
Map<String, String> todos = {"todoTitle": todoTitle};
documentReference.set(todos).whenComplete(() {
print("$todoTitle created");
});
}
deleteTodos(item) {
@override
final User? user = auth.currentUser;
final uid = user?.uid;
DocumentReference documentReference =
FirebaseFirestore.instance.collection(uid!).doc(item);
documentReference.delete().whenComplete(() {
print("$item deleted");
});
}
final FirebaseAuth auth = FirebaseAuth.instance;
late final User? user = auth.currentUser;
late final uid = user?.uid;
late final stream = FirebaseFirestore.instance.collection(uid!).snapshots();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("To-do lijst"),
),
floatingActionButton: FloatingActionButton(
backgroundColor: hexStringToColor("fe98a8"),
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
backgroundColor: hexStringToColor("fe98a8"),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)),
title: Text("Voeg een nieuwe taak toe"),
content: TextField(
onChanged: (String value) {
todoTitle = value;
},
),
actions: <Widget>[
TextButton(
onPressed: () {
createTodos();
Navigator.of(context).pop();
},
child: Text("Add"))
],
);
});
},
child: Icon(
Icons.add,
color: Colors.white,
),
),
body: StreamBuilder(
stream: stream,
builder: (context, snapshots) {
if (snapshots.hasData) {
return ListView.builder(
shrinkWrap: true,
itemCount: snapshots.data?.docs.length,
itemBuilder: (context, index) {
DocumentSnapshot documentSnapshot =
snapshots.data!.docs[index];
return Dismissible(
onDismissed: (direction) {
deleteTodos(documentSnapshot["todoTitle"]);
},
key: Key(documentSnapshot["todoTitle"]),
child: Card(
elevation: 4,
margin: EdgeInsets.all(8),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)),
child: ListTile(
title: Text(documentSnapshot["todoTitle"]),
trailing: IconButton(
icon: Icon(
Icons.delete,
color: Colors.red,
),
onPressed: () {
deleteTodos(documentSnapshot["todoTitle"]);
}),
),
));
});
} else {
return Align(
alignment: FractionalOffset.bottomCenter,
child: CircularProgressIndicator(),
);
}
}),
);
}
}