首页 > 解决方案 > 如何从 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。那是我想发送到其他页面的内容。

有谁知道如何做到这一点?

标签: flutter

解决方案


您应该定义应用程序的“骨架”。您更喜欢在运行时使用全局变量来存储值吗?您想通过页面发送参数而不让它们进入应用程序内存吗?

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

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

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

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

推荐阅读