错误:无效参数:在 URI 文件中未指定主机:///null
Posted
技术标签:
【中文标题】错误:无效参数:在 URI 文件中未指定主机:///null【英文标题】:Error: Invalid argument(s): No host specified in URI file:///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
【参考方案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 的产品并显示一些十字架。以上是关于错误:无效参数:在 URI 文件中未指定主机:///null的主要内容,如果未能解决你的问题,请参考以下文章
UriFormatException:无效的URI:指定的端口无效
在 Amazon ApiGateway 中为 URI 指定的 HTTP 终端节点无效