У меня проблема с тем, что мое приложение работает не так, как должно. Как вы можете видеть из кода ниже, у меня есть Listview.builder со свойством Dismissible. Все работало нормально, но, поскольку я хотел добавить еще один значок в трейлинг (я использовал Wrap и Row), ничего не получалось. С этого момента кнопка «Удалить» и Dismissible не работают. Я также сбросил его только на один завершающий Icon, но, как уже было описано, взаимодействия внутри моего listview.builder не работают. Все остальное полностью функционально.
Вот мой код HomePage. Это импортируется в файл main.dart, где он используется в списке для BottomNavigationBar! Где проблема и как я могу ее решить?
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String input = "";
createTodos() {
DocumentReference documentReference =
Firestore.instance.collection("MyTodos").document(input);
//Map
Map<String, String> todos = {"todoTitle": input};
documentReference.setData(todos).whenComplete(() {
print("$input created");
});
}
deleteTodos(item) {
DocumentReference documentReference =
Firestore.instance.collection("MyTodos").document(item);
documentReference.delete().whenComplete(() {
print("$item deleted");
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: StreamBuilder(
stream: Firestore.instance.collection("MyTodos").snapshots(),
builder: (context, snapshots){
if(snapshots.data == null) return CircularProgressIndicator();
return ListView.builder(
shrinkWrap: true,
itemCount: snapshots.data.documents.length,
itemBuilder: (context, index) {
DocumentSnapshot documentSnapshot = snapshots.data.documents[index];
return Dismissible(
onDismissed: (direction) {
deleteTodos(documentSnapshot["todoTitle"]);
},
key: Key(documentSnapshot["todoTitle"]),
child: Container(
margin: EdgeInsets.all(8),
child: Card(
margin: EdgeInsets.zero,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)
),
color: Colors.grey[300],
child: ListTile(
title: Text(documentSnapshot["todoTitle"] ?? "No ToDos yet!"),
trailing: IconButton(
icon: Icon(Icons.delete),
color: Colors.red,
onPressed: (){
deleteTodos(documentSnapshot["todoTitle"]);
} ),
),
),
decoration: BoxDecoration(
color: Colors.grey[300],
borderRadius: BorderRadius.all(Radius.circular(10)),
boxShadow: [
BoxShadow(
color: Colors.grey[500],
offset: Offset(4.0, 4.0),
blurRadius: 15.0,
spreadRadius: 1.0
),
BoxShadow(
color: Colors.white,
offset: Offset(-4.0, -4.0),
blurRadius: 15.0,
spreadRadius: 1.0
),
]
),
),
);
});
}),
backgroundColor: Colors.grey[300],
);
}
}