Flutter Dismissible больше не работает - PullRequest
0 голосов
/ 27 апреля 2020

У меня проблема с тем, что мое приложение работает не так, как должно. Как вы можете видеть из кода ниже, у меня есть 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],
    );
  }
}
...