如何从carousel_pro flutter传输图像的ID



如果用户点击图像,如何将ID从carousel_pro转移到其他页面。我从数据库mysql中获取图像到carousel_pro。我试图让用户可以点击图片并移动到其他具有图片id的页面。完整的我的代码:



void main() => runApp(MaterialApp(home: Demo()));
class Demo extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<Demo> {
String SelectIdCategory;
bool lodaing=true;
List data;
Future GetAllCategory()async{
var response=await http.get("https://****************.php"
, headers: {"Accept": "application/json"}
);
var jsoBody = response.body;
var jsoData =json.decode(jsoBody);
setState(() {
data= jsoData;
lodaing=false;
});
print('show all data $jsoData');
}
@override
void initState() {
// TODO: implement initState
super.initState();
GetAllCategory();
}
@override
Widget build(BuildContext context) {

return Scaffold(
body:lodaing?   CircularProgressIndicator() :
GestureDetector(
child: Center(
child: SizedBox(
height: 150.0,
width: 300.0,
child: InkWell(
onTap: () {

},
child: Carousel(
//    onImageTap:(index) { print(index.toString()); } ,
boxFit: BoxFit.cover,
autoplay: true,
dotSize: 4.0,
dotSpacing: 15.0,
dotColor: Colors.lightGreenAccent,
indicatorBgPadding: 5.0,
dotBgColor: Colors.purple.withOpacity(0.5),
borderRadius: true,
//   onImageChange: (prev, next) {_selectedIndex = next;}, initialIndex: selectedItem,
images:
data  .map(
(list) {
return Image.network(list['image']);

},
).toList(),

),

),
),
),
)


);
}
}
class ImageScreen extends StatefulWidget {
final String id;
ImageScreen(this.id);
@override
_MyImageScreen createState() => _MyImageScreen(id);
}
class _MyImageScreen extends State<ImageScreen> {
final String id;
_MyImageScreen(this.id);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ImageScreen'),
),
body: Center());
}
}

这是打印结果:

I/flutter (24335): show all data [{id: 1, name: one, image: https://*****************/image},
{id: 3, name: one, image: https://*****************/image}]

正如你从打印数据中看到的,我有两个图像,每个图像都有一个不同的id。这就是我想发送到其他页面的内容。

有人知道怎么做吗?

您应该定义一个;骨架;您的应用程序。您更喜欢在运行时使用全局变量来存储值吗?你想在不让参数进入应用程序ram的情况下通过页面发送参数吗?

如果你想在页面上发送数据,你的新页面类应该接受参数。。这样你就可以通过id。

或者你可以用currentImageId设置一个全局变量,然后在新页面中你可以访问该变量

要在新页面中接受参数,您必须声明最终变量,然后在类的签名中请求它们。。像这个

class DetailPage extends StatefulWidget {
final int yourId;
DetailPage(this.yourId);
}

最新更新