0

我在使用flutter-image. 我可以从我的设备渲染图像,但不能渲染来自互联网的图像!

我不得不提到,我将代码放在androidManifest文件中以获得互联网许可。

但它不起作用。这是我在颤振文档中的代码:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var title = 'Web Images';

    return MaterialApp(
      title: title,
      home: Scaffold(
        appBar: AppBar(
          title: Text(title),
        ),
        body: Image.network(
          'https://picsum.photos/250?image=9',
        ),
      ),
    );
  }
}

我无法理解问题是什么!它不显示任何错误或抛出任何异常。图像根本不会出现在屏幕上。

我需要做些什么来获取从 Internet 或使用 url 呈现的图像吗?

4

1 回答 1

1

我已经测试了你的代码,它似乎可以在 android 模拟器和 iOS 模拟器上运行。

安卓模拟器: 在此处输入图像描述

iOS模拟器: 在此处输入图像描述

有一个关于这个问题的归档错误。

由于评论中已经提到了一些解决方法,例如如果您在发布模式下运行,则INTERNET检查是否已启用。

默认的 Flutter 应用程序模板启用INTERNET调试/配置文件模式(以支持 Dart observatory)但不启用发布模式的权限。

您还可以尝试以下方法:

  • 检查计算机中 DNS 的配置。它可能会阻止您的 android 模拟器的互联网连接。
  • 使用不同的设备检查应用程序(例如物理 android 设备,因为它在 iOS 中工作),然后如果它工作,它是在你的计算机或互联网上检查的东西。

此外,提交的错误评论中还提到了其他解决方法:

顺便说一句,AndroidManifest.xml 出现在我的机器上有两个文件夹:
android/app/src/profile android/app/src/debug

确保您同时拥有这两个权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.flloadimage">
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>

此外,这里还有其他东西可以尝试看看手机是否有问题。在设备启动(或插入)时登录 adb shell 并 ping 网站。

例如应该看起来像这样

~$ adb shell
generic_x86:/ $ ping picsum.photos
PING picsum.photos (104.37.178.1) 56(84) bytes of data.
64 bytes from 104.37.178.1: icmp_seq=1 ttl=254 time=17.6 ms
64 bytes from 104.37.178.1: icmp_seq=2 ttl=254 time=22.4 ms
^C
--- picsum.photos ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5012ms
rtt min/avg/max/mdev = 13.638/19.442/24.621/3.508 ms
generic_x86:/  <press ctrl-d to exit to your prompt>

其他想法

  • 尝试使用其他 wifi,例如咖啡馆。
  • 执行flutter clean命令重建
  • 在另一台电脑上安装
于 2020-10-27T20:49:12.237 回答