1

我正在创建这个购物应用程序,主页将图片和来自 firestore firebase 的一些数据显示为 gridView。这是本页的屏幕

一旦用户单击此页面中的一个图像,应用程序将向他显示另一个页面,其中包含有关带有英雄动画的产品的更多详细信息。 这是第二页 第二页是一个无状态的小部件,它需要一些参数

@override
 Widget build(BuildContext context) {
  return GridView.builder(

  ........

  itemBuilder: (BuildContext context, int index){
    String image = documents[index].data['image'].toString();
    String ti = documents[index].data['title'].toString();
    String prix = documents[index].data['price'].toString();
    String desc = documents[index].data['description'].toString();
    String categ = documents[index].data['category'].toString();
    return new Material(
      elevation: 5.0,
      borderRadius:
      new BorderRadius.all(new Radius.circular(15.0)),
      child: new InkWell(
        onTap: () {
          Navigator.push(
           context,
           new MaterialPageRoute(
           builder: (context) =>
           new FullScreenImagePage(image,ti,prix,desc,categ)));
        },
        child: new Hero(
          tag: image,
          child: new Column(
            children: <Widget>[
              new Padding(padding: EdgeInsets.all(4.0)),
              new FadeInImage(
                image: new NetworkImage(image),
                fit: BoxFit.cover,
                placeholder: new AssetImage("assets/ic.png"),
              ),
              new Text(ti, style: TextStyle(fontSize: 13.0, height: 1.0),),
              new Text('prix: $prix MAD', style: TextStyle(fontSize: 9.0),),
            ],
         ),
       ),
     ),
   );

然后我收到这个类的参数

class FullScreenImagePage extends StatelessWidget {
  String imgPath ,title,price,desc,categ;
  FullScreenImagePage(this.imgPath,this.title,this.price,this.desc,this.categ);

...... 

 Padding(
   padding: EdgeInsets.all(10.0),
   child: Hero(
     tag: imgPath,
     child: Material(
       elevation: 20.0,
       shadowColor: Colors.black26,
       child: Image(
         image: NetworkImage(imgPath),
         fit: BoxFit.cover,
       ),
     ),
   ),
 ),

我遇到的问题是我想将 FullScreenImagePage 的无状态小部件更改为有状态并保持相同的变量

4

2 回答 2

1

如果您使用 IntelliJ,您可以使用alt+enter将无状态小部件更改为有状态小部件

  • 转到类名{{FullScreenImagePage}
  • 按 alt + Enter

在此处输入图像描述

于 2018-06-06T07:51:05.483 回答
0

只需手动或使用快捷方式(快速修复)将无状态小部件转换为有状态小部件。然后使用 widget.variable_name 在状态子类中访问您的变量

于 2018-05-31T04:45:59.773 回答