在我的应用程序中,我生成了一个 ListView,可以通过点击它们来突出显示项目。这很好用,我还有一个回调函数,它为我提供了刚刚选择的项目的键。我目前可以通过再次点击它来手动取消选择该项目,但最终会取消该功能。
我的问题是我希望一次只选择一项。为了创建列表,我目前以列表的形式获取一些初始内容,生成图块并将它们添加到另一个列表中。然后我使用该列表来创建 ListView。我的计划是从新选择的回调中,遍历磁贴列表并在突出显示新选择的磁贴并执行其他功能之前取消选择它们。我尝试了各种方法来告诉每个磁贴取消选择自己,但没有找到任何方法来解决每个磁贴。目前我收到错误:
类“OutlineTile”没有实例方法“取消选择”。接收器:“OutlineTile”的实例尝试调用:deselect()
我试图访问 tile 类中的一个方法并使用一个 setter,但到目前为止都没有工作。我对颤振很陌生,所以它可能是我遗漏的一些简单的东西。我以前的经验是在 Actionscript 中,这个系统可以正常工作,只要它是公共方法,我就可以轻松访问对象的方法(在这种情况下是磁贴)。
我很高兴有另一种方法来取消选择旧项目或找到一种方法来访问磁贴中的方法。 面临的挑战是让瓷砖在没有被点击的情况下不突出显示,而是在不同的瓷砖被点击时显示。
我的父类中的代码如下:
class WorkingDraft extends StatefulWidget {
final String startType;
final String name;
final String currentContent;
final String currentID;
final List startContent;
WorkingDraft(
{this.startType,
this.name,
this.currentContent,
this.currentID,
this.startContent});
@override
_WorkingDraftState createState() => _WorkingDraftState();
}
class _WorkingDraftState extends State<WorkingDraft> {
final _formKey = GlobalKey<FormState>();
final myController = TextEditingController();
//String _startType;
String _currentContent = "";
String _name = "Draft";
List _startContent = [];
List _outLineTiles = [];
int _counter = …Run Code Online (Sandbox Code Playgroud)