簡體   English   中英

單擊刪除時從 ListView Builder 中刪除容器

[英]Remove container from ListView Builder when clicked to remove

ListView Builder 生成容器。 在容器內部,它有另一個容器來移除第一個容器。 我已經嘗試過 Dismissible,但它沒有用......這個問題非常相似,但我無法申請我的代碼:

從 ListView.builder Flutter 中刪除項目

希望有人可以提供幫助:)))

這是代碼:

ListView.builder(
                        scrollDirection: Axis.horizontal,
                        shrinkWrap: true,
                        padding: EdgeInsets.only(bottom: 10),
                        itemCount:
                            snapshot.data != null ? snapshot.data.length : 0,
                        itemBuilder: (BuildContext context, int index) {
                          OrdersModel orderItem = snapshot.data[index];
                          return InkWell(
                            //onTap
                            child: Container(
                              padding: EdgeInsets.only(
                                  bottom: 10, top: 10, left: 5, right: 5),
                              margin: EdgeInsets.only(left: 5, right: 15),
                              width: 187,
                              decoration: BoxDecoration(
                                borderRadius: BorderRadius.all(
                                  Radius.circular(20),
                                ),
                                color: Colors.white,
                                boxShadow: [
                                  BoxShadow(
                                    color: Colors.grey,
                                    blurRadius: 0.5,
                                  ),
                                ],
                              ),
                              child: Column(
                                children: [
                                  Container(
                                    child: Material(
                                      borderRadius: BorderRadius.all(
                                        Radius.circular(10),
                                      ),
                                      color: Color(0xffeb5c68),
                                      child: InkWell(
                                        splashColor: Color(0xffda1b2b),
                                        borderRadius: BorderRadius.all(
                                          Radius.circular(10),
                                        ),
                                        child: SizedBox(
                                          width: 220,
                                          height: 40,
                                          child: Row(
                                            mainAxisAlignment:
                                                MainAxisAlignment.center,
                                            children: [
                                              Text(
                                                "REMOVE ${orderItem.number}",
                                                textAlign: TextAlign.center,
                                                style: TextStyle(
                                                  color: Colors.white,
                                                ),
                                              ),
                                            ],
                                          ),
                                        ),
                                        onLongPress: () async {
                                          Navigator.push(
                                            context,
                                            MaterialPageRoute(
                                              builder: (context) =>
                                                  OrderDetailsPage(),
                                            ),
                                          );
                                        },
                                      ),
                                    ),
                                  ),
                                ],
                              ),
                            ),
                            onTap: () {},
                          );
                        },
                      );

你可能可以在你的列表項中調用一個 snapshot.data.removeAt(index) ,就像這樣:

ListView.builder(
      itemCount: items.length,
      itemBuilder: (context, index) {
        final item = items[index];

        return ListTile(title: Text('$item --- Click to remove me'),onTap:(){
            setState(() {
              items.removeAt(index);
            });
          });
      },
    ),

您可以使用Dismissible https://flutter.dev/docs/cookbook/gestures/dismissible作為您的解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM