【问题标题】:flutter Firebase Animated List view how to pass data to detail screen扑动 Firebase 动画列表视图如何将数据传递到详细信息屏幕
【发布时间】:2021-11-07 13:26:06
【问题描述】:

在动画列表视图的第一个屏幕上检索到的数据,并希望导航单击的项目详细信息屏幕并想了解如何在第二个屏幕小部件上传递值的完整详细信息

代码如下:

从 Firebase 实时数据库检索的数据

第一个屏幕:

 FirebaseAnimatedList(
      scrollDirection: Axis.horizontal,
      defaultChild: Center(child: CircularProgressIndicator()),
      query: reference,
      itemBuilder: (BuildContext context, DataSnapshot snapshot,
          Animation<double> animation, int index) {
        Map mydata = snapshot.value;
        mydata['key'] = snapshot.key;

        return InkWell(
          onTap: () {
            {
              //// how to Navigate
            }
          },
          child: Container(
            width: 150,
            height: 150,
            child: Card(
              color: Colors.black87,
              child: FadeInImage(
                image: NetworkImage(mydata['image']),
                placeholder: AssetImage("assets/images/placeholder.png"),
              ),
            ),
          ),
        );
      },
    )

如何在第二屏小部件上传递和分配值

第二屏

class SecondScreen extends StatefulWidget {
  const SecondScreen({Key? key}) : super(key: key);

  @override
  _SecondScreenState createState() => _SecondScreenState();
}

class _SecondScreenState extends State<SecondScreen> {
  @override
  Widget build(BuildContext context) {
    return Container(
      width: MediaQuery.of(context).size.width,
      height: 250,
      decoration: BoxDecoration(
        border: Border.all(color: Colors.red),
        image: DecorationImage(
          fit: BoxFit.fill,
          image: NetworkImage(// How to pass  ),
              ),
        ),
      ),
    );
  }
}

【问题讨论】:

    标签: firebase flutter listview firebase-realtime-database flutter-navigation


    【解决方案1】:

    您可以使用Navigator.push 和下一个屏幕导航到该方法。

    为了发送数据,您可以在导航时通过构造函数将数据传递给第二个小部件。

    解决方案

    1. 将您的 SecondScreen 小部件更新为:
    class SecondScreen extends StatefulWidget {
      final String url;
      const SecondScreen({Key? key, required this.url}) : super(key: key);
    
      @override
      _SecondScreenState createState() => _SecondScreenState();
    }
    
    class _SecondScreenState extends State<SecondScreen> {
      @override
      Widget build(BuildContext context) {
        return Container(
          width: MediaQuery.of(context).size.width,
          height: 250,
          decoration: BoxDecoration(
            border: Border.all(color: Colors.red),
            image: DecorationImage(
              fit: BoxFit.fill,
              image: NetworkImage(widget.url),
            ),
          ),
        );
      }
    }
    

    它将url 参数添加到SecondScreen 小部件的构造函数中,并使用widget.urlState 中检索它。

    1. InkWellonTap 更新为:
      onTap: () {
                {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => SecondScreen(
                        url: mydata['image'],
                      ),
                    ),
                  );
                }
              },
    

    它使用url 参数将数据传递给SecondWidget


    查看Send data to a new screen 了解更多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 2019-02-11
      • 1970-01-01
      • 2016-08-08
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多