我有一个这样的拖鞋(a是StatefulWidget
):
Draggable(child: a, feedback: a, childWhenDragging: null, data: a)
然而,a
有一个GlobalKey,以在小部件被丢弃时保持状态.我的问题是,当您try 拖动时,会抛出duplicate GlobalKey
错误(可能是因为child
和feedback
存在于同一帧上).有没有什么方法可以在没有任何错误的情况下实现这种行为?
可复制示例:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class SFWidget extends StatefulWidget {
const SFWidget({Key? key}) : super(key: key);
@override
State<SFWidget> createState() => SFWidgetState();
}
class SFWidgetState extends State<SFWidget> {
String str = "str";
@override
Widget build(BuildContext context) {
return Text(str);
}
void edit(String newstr) {
setState(() {
str = newstr;
});
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final key = GlobalKey<SFWidgetState>();
final widget = SFWidget(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Draggable(
child: widget,
feedback: widget,
data: widget,
childWhenDragging: null,
),
);
}
}