您好,我想问一个问题,如何编码一个函数,该函数将从listview.builder中获取值,然后将其转发到第二个屏幕,
示例
从下面的图片, 例如,“选定项目2”,那么在底部应该有一个按钮,显示“提交”,在下一个屏幕上,应该在屏幕中间说出该项目? 且应仅是一项,而不是多项选择,
请帮我,抓挠我的头,我理解下拉代码如何使用setstate起作用,但我无法理解它可以在listview.builder上起作用
答案 0 :(得分:1)
您需要在下一个视图中看到该值:
class SecondView extends StatefulWidget {
final String value;
SecondView({this.value});
@override
_SecondViewState createState() => _SecondViewState();
}
class _SecondViewState extends State<SecondView> {
@override
Widget build(BuildContext context) {
return Container(
child: Text(widget.value),
);
}
}
并在上一个视图中发送:
void moveToNextView(String name){
Navigator.of(context).push(MaterialPageRoute(
builder: (context) {
return SecondView(value: name);
}
));
}
答案 1 :(得分:1)
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: ListView.builder(
shrinkWrap: true,
itemCount: 15,
itemBuilder: (con, ind) {
return ListTile(
title:
Text('Item $ind', style: TextStyle(color: Colors.black)),
onTap: () {
Navigator.push(
con,
MaterialPageRoute(
builder: (cc) => OtherScreen(value: 'Item $ind')));
});
}));
}
}
class OtherScreen extends StatefulWidget {
//add your custom data
final String value;
OtherScreen({Key k, @required this.value}) : super(key: k);
@override
_OtherState createState() => _OtherState(value);
}
class _OtherState extends State<OtherScreen> {
_OtherState(this.data);
String data;
@override
Widget build(BuildContext context) {
return Container(
alignment: Alignment.center,
color: Colors.white,
child: Text(data, style: TextStyle(color: Colors.black)));
}
}