如果用户点击图像,如何将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);
}