【问题标题】:Error: Invalid argument(s): No host specified in URI file:///null错误:无效参数:在 URI 文件中未指定主机:///null
【发布时间】:2021-09-28 12:16:45
【问题描述】:

在解析图像编解码器时引发以下 ArgumentError: 无效参数:在 URI 文件中未指定主机:///null

当异常被抛出时,这是堆栈: #0 _HttpClient._openUrl (dart:_http/http_impl.dart:2636:9) #1 _HttpClient.getUrl (dart:_http/http_impl.dart:2565:48) #2 NetworkImage._loadAsync (package:flutter/src/painting/_network_image_io.dart:89:59) #3 NetworkImage.load (package:flutter/src/painting/_network_image_io.dart:50:14) #4 ImageProvider.resolveStreamForKey。 (包:flutter/src/painting/image_provider.dart:503:13) ... 图片提供者:NetworkImage("null", scale: 1.0) 图片键:NetworkImage("null", scale: 1.0)

代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:your_store/widgets/custom_action_bar.dart';
import 'package:your_store/widgets/product_cart.dart';

class HomeTab extends StatelessWidget {
  final CollectionReference _productRef =
  FirebaseFirestore.instance.collection("Products");

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Stack(
        children: [
          FutureBuilder<QuerySnapshot>(
            future: _productRef.get(),
            builder: (context, snapshot) {
              if (snapshot.hasError) {
                return Scaffold(
                  body: Center(
                    child: Text("Error: ${snapshot.error}"),
                  ),
                );
              }

              // Collection Data ready to display
              if (snapshot.connectionState == ConnectionState.done) {
                //Display data in List View
                return ListView(
                  padding: EdgeInsets.only(
                    top: 108.0,
                    bottom: 12.0,
                  ),
                  children:
                  snapshot.data!.docs.map((QueryDocumentSnapshot document) {
                    // Map<String, dynamic> data = document.data();
                    final dynamic data = document.data();

                    return ProductCart(
                      title: data["name"],
                      imageUrl: data["images"[0]],
                      price: "₹${data["price"]}",
                      productId: document.id,
                    );
                  }).toList(),
                );
              }

              // Loading State
              return Scaffold(
                body: Center(
                  child: CircularProgressIndicator(),
                ),
              );
            },
          ),
          CustomActionBar(
            title: "Home",
            hasBackArrow: false,
          ),
        ],
      ),
    );
  }
}

【问题讨论】:

  • 可能data["images"[0]] 具有导致错误的空值。
  • 能否请您检查我的代码并告诉我可能的修复方法?这是代码链接。 github.com/Bhaskar2510/Final

标签: firebase flutter firebase-realtime-database google-cloud-firestore firebase-authentication


【解决方案1】:

@Bhaskar2510 在获取产品时,任何产品中的图片链接都可能损坏或为空,因此您必须在将其传递给图片小部件之前添加空检查。

替换ProductCart下面的代码

Container(
  height: 350.0,
  child: ClipRRect(
    borderRadius: BorderRadius.circular(12.0),
    child: Image.network(
      "$imageUrl",
      fit: BoxFit.contain,
    ),
  ),
),

Container(
  height: 350.0,
  child: ClipRRect(
    borderRadius: BorderRadius.circular(12.0),
    child: imageUrl == null ? Placeholder()
     : Image.network(
      "$imageUrl",
      fit: BoxFit.contain,
    ),
  ),
)

【讨论】:

  • 嘿!谢谢这解决了我的代码错误,但是如果您尝试在模拟器中运行代码并且登录后仍然存在问题,它没有从我的 ew firebase 获取产品它仍然显示来自我旧链接的 firebase 的产品并显示一些十字架。
猜你喜欢
  • 2021-08-10
  • 2021-06-10
  • 2021-09-19
  • 2020-10-09
  • 2021-11-10
  • 2022-06-15
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
相关资源
最近更新 更多