如何从可滚动的ListView.builder中选择和拖放项目。到应用程序的任何区域? 导入“包装:颤振/材料.省道”; void main()=>runApp(MaterialApp( 主页:OneCard SelectInanimation(), )); class oneCardSelectinAnimation扩展了StatefulWidget{ @凌驾 _OneCardSelectInImationState createState()=> _OneCardSelectInImationState(); } 类列表项{ bool isSelected=false;//是否高亮显示选择属性 T data;//用户的数据 ListItem(this.data);//用于分配数据的构造函数 } 类_OneCardSelectInImationState扩展状态{ 名单; @凌驾 void initState(){ super.initState(); 填充数据(); } void populateData(){ 列表=[]; 对于(inti=0;i

如何从可滚动的ListView.builder中选择和拖放项目。到应用程序的任何区域? 导入“包装:颤振/材料.省道”; void main()=>runApp(MaterialApp( 主页:OneCard SelectInanimation(), )); class oneCardSelectinAnimation扩展了StatefulWidget{ @凌驾 _OneCardSelectInImationState createState()=> _OneCardSelectInImationState(); } 类列表项{ bool isSelected=false;//是否高亮显示选择属性 T data;//用户的数据 ListItem(this.data);//用于分配数据的构造函数 } 类_OneCardSelectInImationState扩展状态{ 名单; @凌驾 void initState(){ super.initState(); 填充数据(); } void populateData(){ 列表=[]; 对于(inti=0;i,listview,flutter,drag-and-drop,draggable,Listview,Flutter,Drag And Drop,Draggable,我有一个包含78项的可滚动ListView.builder。我可以轻松地滚动并选择它们。但我需要滚动并选择它们,并能够将任何项目拖动到应用程序的中心。我尝试将其拖动到列表视图,但无法再滚动。 提前谢谢你的帮助 import 'package:flutter/material.dart'; void main() => runApp(MaterialApp( home: oneCardSelectinAnimation(), )); class oneCardSele

我有一个包含78项的可滚动ListView.builder。我可以轻松地滚动并选择它们。但我需要滚动并选择它们,并能够将任何项目拖动到应用程序的中心。我尝试将其拖动到列表视图,但无法再滚动。 提前谢谢你的帮助

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: oneCardSelectinAnimation(),
    ));

class oneCardSelectinAnimation extends StatefulWidget {
  @override
  _oneCardSelectinAnimationState createState() =>
      _oneCardSelectinAnimationState();
}

class ListItem<T> {
  bool isSelected = false; //Selection property to highlight or not
  T data; //Data of the user
  ListItem(this.data); //Constructor to assign the data
}

class _oneCardSelectinAnimationState extends State<oneCardSelectinAnimation> {
  List<ListItem<String>> list;
  @override
  void initState() {
    super.initState();
    populateData();
  }

  void populateData() {
    list = [];
    for (int i = 0; i < 78; i++) list.add(ListItem<String>("item $i"));
  }

  int maxSelectedCards = 7;
  int currentSelectedCards = 0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("List Selection${currentSelectedCards}"),
      ),
      body: Container(
        height: MediaQuery.of(context).size.height * 0.3,
        child: ListView.builder(
          scrollDirection: Axis.horizontal,
          itemCount: list.length,
          itemBuilder: _getListItemTile,
        ),
      ),
    );
  }

  Widget _getListItemTile(BuildContext context, int index) {
    return GestureDetector(
      onTap: () {
        if (currentSelectedCards < maxSelectedCards &&
            !(list[index].isSelected)) {
          setState(() {
            list[index].isSelected = true;
            currentSelectedCards += 1;
          });
        }
      },
      onLongPress: () {
        if (currentSelectedCards > 0 && list[index].isSelected) {
          setState(() {
            list[index].isSelected = false;
            currentSelectedCards -= 1;
          });
        }
      },
      child: Container(
        width: list[index].isSelected
            ? MediaQuery.of(context).size.width * 0.4
            : MediaQuery.of(context).size.width * 0.3,
        height: MediaQuery.of(context).size.height * 0.3,
        margin: EdgeInsets.symmetric(vertical: 4),
        color: list[index].isSelected ? Colors.white70 : Colors.white,
        child: Image.asset(
          "images/scroll.png",
        ),
      ),
    );
  }
}