当前位置: 首页 > 知识库问答 >
问题:

在 Flutter 中显示图像一次有效

沈琛
2023-03-14

当我在文件中设置Image并在资产中设置它时,我对flutter < code > image . assets 有一个问题,如下所示:

`颤振:使用材质设计:真实资源:

  • 图片/facebook.png'

当我把它放在代码中时:

Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Image.asset(
          "images/facebook.png"

        ),
        Text(
          '$_counter',
          style: Theme.of(context).textTheme.display1,
        ),
      ],
    ),
  ),

并运行它,它运行良好,但我第二次运行代码时,它不显示,这是我得到的错误:

I/颤振 (4784): ═══ 图像资源服务捕获的异常 ╞═════════════════════════════════════════════════ I/颤振 (4784):解析图像时抛出以下断言:I/颤振 (4784):无法加载资产:资产清单.json . . .I/flutter ( 4784): #381 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:969:5) I/flutter ( 4784): #382 RenderObjectToWidgetAdapter.attachToRenderTree.(package:flutter/src/widgets/binding.dart:915:17)I/flutter ( 4784): #383 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2328:19) I/flutter ( 4784): #384 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:914:13) I/flutter ( 4784): #385 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:795:7) I/flutter ( 4784): #386 runApp (package:flutter/src/widgets/binding.dart:845:7) I/flutter ( 4784): #387 main (package:flutter_app/main.dart:4:16) I/flutter( 4784): #388 _runMainZoned..(dart:ui/hooks.dart:229:25)I/颤振 ( 4784): #393 _runMainZoned.(dart:ui/hooks.dart:221:5)I/颤振 ( 4784): #394
_startIsolate.(dart:isolate-patch/isolate_patch.dart:305:19)I/颤振 ( 4784): #395 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12) I/颤振 ( 4784): (从包 dart:异步省略 7 帧) I/颤振 ( 4784): 图像提供者: AssetImage(捆绑: 空, 名称: “images/facebook.png”) I/颤振 ( 4784): 映像配置: 映像配置(捆绑: 平台资产捆绑包#b5447(), 设备像素比率: 1.5, I/颤振 ( 4784): 区域设置: en_US, 文本方向: 文本方向.ltr, 平台: android) I/颤振 ( 4784): ════════════════════════════════════════════════════════════════════════════════════════════════════

共有3个答案

鲜于雨石
2023-03-14

确保在pubspec.yaml中使用2或4个空格(避免制表符)作为缩进。

你的pubspec.yaml一定是这样的

flutter:
  uses-material-design: true
  assets:
    - images/facebook.png

不是这样的

flutter:
  uses-material-design: true
  assets:
      - images/facebook.png # error

或者像这样

flutter:
  uses-material-design: true
  assets:
  - images/facebook.png # also error

在您的终端中运行< br > < code > flutter clean < br > < code > flutter pub get < br >

潘翊歌
2023-03-14

我的代码:

import 'package:flutter/material.dart';
import 'dart:io';
import 'package:image_picker/image_picker.dart';
void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'myApp'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  File imageFile;
  int _counter = 0;
  Color red = Colors.red;
   _incrementCounter() async{
     var picture = await ImagePicker.pickImage(source: ImageSource.camera);

    this.setState(() {
      // This call to setState tells the Flutter framework that something has
      // changed in this State, which causes it to rerun the build method below
      // so that the display can reflect the updated values. If we changed
      // _counter without calling setState(), then the build method would not be
      // called again, and so nothing would appear to happen.
      imageFile = picture;
      _counter++;
      print("work");
    });
  }

  @override
  Widget build(BuildContext context) {
    // This method is rerun every time setState is called, for instance as done
    // by the _incrementCounter method above.
    //
    // The Flutter framework has been optimized to make rerunning build methods
    // fast, so that you can just rebuild anything that needs updating rather
    // than having to individually change instances of widgets.
    return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Image.asset(
              "images/facebook.png"

            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

我的pubspec.yaml:

name: flutter_app
description: A new Flutter application.

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  image_picker:


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter


# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:
  uses-material-design: true
  assets:
   - images/

  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware.

  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages
冯皓
2023-03-14

检查这个

assets:
   - images/facebook.png

确保你的空间与这样完全相同

flutter:

[2 whitespaces or 1 tab]assets:
[4 whitespaces or 2 tabs]- images/facebook.png

每个空间都很重要

 类似资料:
  • 我想在GridView中显示图像列表。但我做不到。我想知道资产中图像列表的数据类型,以及构造函数在这种情况下的帮助。我刚刚开始学习颤振,我不知道如何使用它。

  • 我想显示图像,但不知道该怎么做。我不知道是必须安装一些库文件,还是简单地安装就可以了。实际上我想做图像处理,但首先我必须接受图像输入并显示图像,然后我可以得到图像处理的效果作为输出,并决定它(算法)是否正确。我只安装了eclipse。我也在谷歌上搜索过,但是无论他们建议什么都不管用。要么我得装点什么,要么不装。 我已经尝试了以下代码: 它只是显示一个图形窗口,但不能显示图像“bishnu.jpg”

  • 它将我带到图库以选择图像,但未显示在应用程序中,当单击上传按钮时,它只是一个空白图像视图 < li >我的Java代码 < li>XML代码 运行时显示此错误 java.lang.IllegalArgumentException:uri不能为空 以下两处给出错误的行显示了uri错误

  • 问题内容: 我有点卡住。为什么不做这项工作?我只是收到一条错误消息: java.lang.NoSuchMethodError:主要 线程“主”中的异常 问题答案: main需要是静态的,并且必须具有String []而不是String的参数。 为了解决这个问题,将所有东西都放在构造函数中,例如

  • 我创建了一个动态web项目,以便通过Servlet显示JSP(我不能使用任何类似Spring的框架…)。默认情况下,我构建的类放在Build/classes中,因此在我将输出文件夹更改为WebContent/WEB-INF/classes后,我的应用程序运行良好。之后,我将该项目转换为Maven项目。(我不记得我上次使用servlet/JSP时需要更改输出文件夹,那是3年前!)。 无论如何,现在我

  • 我正在创建一个图像库,在单击时显示图像的模式和一些附加信息。数据是从嵌入的json字符串中提取的。该模式在一个大框架中显示正确的图像,但也显示下面的其他图像。如何防止显示其他图像? 非常感谢! 这是JSON: 这是HTML: 这将JSON放在div中: 这就是模态: var modal=文档。getElementById('myModal');