当用户点击“清除图标”按钮时,如何删除TextField?(不仅仅是清除TextField的文本)
用户故事 用户单击一个按钮以添加玩家。(技术上,此按钮添加TextField) 用户可以在TextField中编写玩家的名称。 用户单击“清除图标”按钮以删除当前的TextField(相反于添加功能)。
例如,如果用户在玩家4上设置了“John”,并且用户单击“清除按钮”,则玩家4的文本字段将被删除。只剩下4个文本字段。
用户故事 用户单击一个按钮以添加玩家。(技术上,此按钮添加TextField) 用户可以在TextField中编写玩家的名称。 用户单击“清除图标”按钮以删除当前的TextField(相反于添加功能)。
new ListView.builder(
padding: EdgeInsets.all(0),
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: 5,
itemBuilder: (context, index) {
print(index);
return TextField(
maxLength: 20,
decoration: InputDecoration(
labelText: "Player ${index+1}",
counterText: "",
prefixIcon: const Icon(Icons.person),
suffixIcon: new IconButton(
icon: Icon(Icons.clear),
onPressed: () =>
setState(() {
this.dispose(); // -----Doesn't work----
})
),
),
);
}
),
例如,如果用户在玩家4上设置了“John”,并且用户单击“清除按钮”,则玩家4的文本字段将被删除。只剩下4个文本字段。
ScrollController _scrollController = new ScrollController(); if (controllers.length < fieldCount) { for (i = controllers.length; i < fieldCount; i++) { controllers.add(TextEditingController()); _scrollController.animateTo( 0.0, curve: Curves.easeOut, duration: const Duration(milliseconds: 300), ); } }
- Thibaut FAURE_PlayerListState
类的属性,并仅在initState()
函数中初始化它。然后在_buildList()
函数中将其附加为ListView
的控制器。接着,在onTap
回调函数中执行_scrollController.animateTo()
,这样就能正常工作了。如果你把它放在构建阶段期间的setState()
方法内,则会出现错误。因此请将它移至onTap
回调函数中。 - loushouScrollController _scrollController = new ScrollController();
。在initState()函数中,_scrollController = ScrollController();
。在ListView中,controller: _scrollController,
。 - Thibaut FAURE