Flutter 如何在DragTarget内重置值?
我使用Flutter 如何在DragTarget内重置值?,flutter,Flutter,我使用Draggable和DragTarget渲染了两行。第一行包含单词的混杂字母,另一行包含从第一行拖动相应字母后单词的正确顺序,如下所示: 现在,如果我再次点击混淆字母的按钮,我想将第二行(绿色容器)中的数据重置为?,以便用户可以再次拖放,但目前我不确定如何重置数据。以下是点击按钮时在第一行生成混乱字母的代码: RaisedButton( color: Colors.redAccent, shape: Roun
Draggable
和DragTarget
渲染了两行。第一行包含单词的混杂字母,另一行包含从第一行拖动相应字母后单词的正确顺序,如下所示:
现在,如果我再次点击混淆字母的按钮,我想将第二行(绿色容器)中的数据重置为?
,以便用户可以再次拖放,但目前我不确定如何重置数据。以下是点击按钮时在第一行生成混乱字母的代码:
RaisedButton(
color: Colors.redAccent,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20)),
onPressed: () {
setState(() {
_generateJumble(textInput);
_controller.clear();
});
},
child: Text('Jumble'),
),
如果用户再次点击按钮,如何将
绿色容器中的值重置为?
如果用户再次点击按钮,如何将绿色容器中的值重置为?在您的提升按钮中
我想您需要做的就是将接受数据
设置回false。我也会确保canidateData
为空,但在你给我们的代码
RaisedButton(
color: Colors.redAccent,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20)),
onPressed: () {
setState(() {
acceptData = false;
//canidateData = [];
_generateJumble(textInput);
_controller.clear();
});
},
child: Text('Jumble'),
)
没问题,如果你觉得这个有用的话,我也会问你同样的问题
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: inputList.map((i) {
return Draggable<String>(
data: i,
feedback: Container(
margin: EdgeInsets.only(right: 5),
alignment: Alignment.center,
width: 50,
height: 50,
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(20)),
child: Text(i.toUpperCase(),
style: TextStyle(color: Colors.white, fontSize: 18),
textAlign: TextAlign.center)),
child: Container(
margin: EdgeInsets.only(right: 5),
alignment: Alignment.center,
width: 50,
height: 50,
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(20),
),
child: Text(i.toUpperCase(),
style: TextStyle(color: Colors.white, fontSize: 18),
textAlign: TextAlign.center)),
);
}).toList(),
),
Padding(
padding: EdgeInsets.only(top: 15),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: outputList.map((o) {
return DragTarget<String>(
builder: (BuildContext context,
List<String> candidateData,
List<dynamic> rejectedData) {
if (acceptData == false && candidateData.isEmpty) {
return Container(
margin: EdgeInsets.only(right: 5),
alignment: Alignment.center,
width: 50,
height: 50,
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(20),
),
child: Text('?',
style: TextStyle(
color: Colors.white, fontSize: 18),
textAlign: TextAlign.center));
} else {
return Container(
margin: EdgeInsets.only(right: 5),
alignment: Alignment.center,
width: 50,
height: 50,
decoration: BoxDecoration(
color: Colors.green,
borderRadius: BorderRadius.circular(20),
),
child: Text(o.toUpperCase(),
style: TextStyle(
color: Colors.white, fontSize: 18),
textAlign: TextAlign.center));
}
},
onWillAccept: (data) {
if (data == o) {
acceptData = true;
return true;
} else {
acceptData = false;
return false;
}
},
onAccept: (data) {
return true;
},
onLeave: (data) {});
}).toList()
)),
RaisedButton(
color: Colors.redAccent,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20)),
onPressed: () {
setState(() {
acceptData = false;
//canidateData = [];
_generateJumble(textInput);
_controller.clear();
});
},
child: Text('Jumble'),
)