在使用 NetworkImage 组件加载外部图片时,提示 Failed host lookup: '[图片host]' 错误。
解决方案:
flutter clean清空缓存后flutter pub getflutter create .在android/src/main/AndroidManifest.xml中manifest标签中配置一下权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

如果项目时运行在Chrome中,确认图片所在的域名是否支持跨域。
大家可能会疑惑,图片资源正常都是浏览器直接使用img标签,或者css中使用background设置背景图片,这些场景浏览器不启用同源策略,所以不用考虑跨域的问题。
但是flutter中的图片资源是组件通过xhr请求获取的,所以需要确保xhr获取图片资源的方式,是否被服务器支持。

上面的例子,是把app部署到chrome上,我们可以看到,图片资源是通过xhr请求获取。
例如:要在 UserAccountsDrawerHeader 中使用本地图片作为头像,你可以按照以下步骤操作:
assets/images/。pubspec.yaml文件中配置图片路径:打开项目的 pubspec.yaml 文件,并在其中配置图片路径。添加一个 assets 部分,将图片文件路径或者图片目录路径添加到其中,如下所示:flutter:
assets:
- assets/images/your_image.png
- assets/images/
UserAccountsDrawerHeader 中使用 Image.asset 小部件来显示本地图片。以下是一个示例,演示如何在 UserAccountsDrawerHeader 中使用本地图片作为头像:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Drawer Example'),
),
drawer: Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
UserAccountsDrawerHeader(
accountName: Text('John Doe'),
accountEmail: Text('john.doe@example.com'),
currentAccountPicture: CircleAvatar(
backgroundImage: AssetImage('assets/images/your_image.png'),//--here
),
),
ListTile(
title: Text('Item 1'),
onTap: () {
// Handle item 1 tap
},
),
ListTile(
title: Text('Item 2'),
onTap: () {
// Handle item 2 tap
},
),
// Add more list items as needed
],
),
),
),
);
}
}