Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 从列表更新小部件<;Widget>;飘飘然?_Flutter_Dart - Fatal编程技术网

Flutter 从列表更新小部件<;Widget>;飘飘然?

Flutter 从列表更新小部件<;Widget>;飘飘然?,flutter,dart,Flutter,Dart,我需要知道是否有任何可能的方法在添加到列表后更新小部件的属性,如大小和颜色。。考虑下面的代码… List<Widget> tree = []; 列表树=[]; 当它被拖放到容器上时,我添加了以下小部件。。要显示多个小部件,我使用的是堆栈 DragTarget和Stack如下所示 DragTarget<String>( builder: (a,b,c)=>Stack( children: tree, ), onAccept: (data){

我需要知道是否有任何可能的方法在添加到列表后更新小部件的属性,如大小和颜色。。考虑下面的代码…

List<Widget> tree = [];
列表树=[];
当它被拖放到容器上时,我添加了以下小部件。。要显示多个小部件,我使用的是堆栈

DragTarget和Stack如下所示

DragTarget<String>(
  builder: (a,b,c)=>Stack(
    children: tree,
  ),
  onAccept: (data){
    tree.add(Positioned(
     key: Key("$sx$sy"),
     top: _y,
     left: _x,
     child: FlatButton(
      onPressed: (){
      },
      child: CustomPaint(
       size: Size(sx/2, sy/2),
       painter: ShapePainter(shape: "circle", sx : sx/2, sy: sy/2),
       child: Container(
        width: sx,
        height: sy,
       ),
      ),
     ),
    )
   );
  }
DragTarget(
生成器:(a、b、c)=>堆栈(
孩子们:树,
),
onAccept:(数据){
树。添加(定位)(
key:key($sx$sy”),
顶部:_y,
左:x,
孩子:扁平按钮(
已按下:(){
},
孩子:定制油漆(
尺寸:尺寸(sx/2,sy/2),
画家:ShapePainter(形状:“圆形”,sx:sx/2,sy:sy/2),
子:容器(
宽度:sx,
身高:sy,
),
),
),
)
);
}

从图中,我想实现的是,每当我点击一个圆圈时,我应该能够通过手势来更新它的形状和大小

注 我实现了类似的功能,创建了一个相同类型和所需属性的新小部件,不是通过手势,而是通过在输入字段中填充细节,然后用以下方式替换它

List<Widget> tree; 

//Then replace it with..

tree.insert(0, Container());
OR
tree.insert(1, Container());
列表树;
//然后将其替换为。。
插入(0,Container());
或
插入(1,Container());
我不需要这个来工作

我需要访问我单击的项目的属性,然后用手势更新其形状和大小

资源 如果您需要查看我的完整代码,请使用
请随意贡献。

您需要为您的项目创建一个自定义的有状态小部件,并在单击它们时更改状态



class CustomItem extends StatefulWidget {
  @override
  _CustomItemState createState() => _CustomItemState();
}

class _CustomItemState extends State<CustomItem> {
  var desiredChangingVariable;

  @override
  Widget build(BuildContext context) {
    return Positioned(
      key: Key("$sx$sy"),
      top: _y,
      left: _x,
      child: FlatButton(
        onPressed: (){
          setState(() {
            //desiredChangingVariable = newValue;
          });
        },
        child: CustomPaint(
          size: Size(sx/2, sy/2),
          painter: ShapePainter(shape: "circle", sx : sx/2, sy: sy/2),
          child: Container(
            width: sx,
            height: sy,
          ),
        ),
      ),
    );
  }
}






类CustomItem扩展StatefulWidget{
@凌驾
_CustomItemState createState()=>\u CustomItemState();
}
类_CustomItemState扩展状态{
var期望变化变量;
@凌驾
小部件构建(构建上下文){
返回定位(
key:key($sx$sy”),
顶部:_y,
左:x,
孩子:扁平按钮(
已按下:(){
设置状态(){
//desiredChangingVariable=新值;
});
},
孩子:定制油漆(
尺寸:尺寸(sx/2,sy/2),
画家:ShapePainter(形状:“圆形”,sx:sx/2,sy:sy/2),
子:容器(
宽度:sx,
身高:sy,
),
),
),
);
}
}
此外,在处理填充的有状态项时,请确保您不会忘记键。

谢谢Henok,这样就可以了。