flutter - 如何从 carousel_pro 颤振中传输图像的 ID
问题描述
如果用户点击图像从 carousel_pro 转移到其他页面,如何传输 ID。我从数据库 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。那是我想发送到其他页面的内容。
有谁知道如何做到这一点?
解决方案
您应该定义应用程序的“骨架”。您更喜欢在运行时使用全局变量来存储值吗?您想通过页面发送参数而不让它们进入应用程序内存吗?
如果你想在页面上发送数据,你的新页面类应该接受参数..这样你就可以传递 id。
或者您可以使用 currentImageId 设置一个全局变量,然后在新页面中您可以访问该变量
要在新页面中接受参数,您必须声明最终变量,然后在您请求它们的类的签名中声明......像这样
class DetailPage extends StatefulWidget {
final int yourId;
DetailPage(this.yourId);
}
推荐阅读
- grails - 检查 instanceOf 后的 ClassCastException
- c++11 - 如果我将向量声明为全局变量,那么向量分配在哪里?
- java - 用于 jsp 标记中的每个值
- ruby-on-rails - 使用 headless chrome 在 rails 中进行测试时出现 ElementNotVisibleError
- html - 在 Bootstrap 4 的小屏幕上隐藏一列
- scala - 基于字符串的 SCALA 列表分区
- java - java反射仅获取所有用户创建的类变量
- ios - iOS - 在stackview中查看不显示阴影
- javascript - decodeAudioData 将 ArrayBuffer 转换为 Float32Array
- javascript - 使用 ArcGIS 的 Javascript:InfoWindow 不显示字段中的值