当我在文件中设置图像并以这样的方式设置图像时,Image.assets出现了问题:
flutter:
uses-material-design: true
assets:
- images/facebook.png
以及当我将其放入代码中时:
Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.asset(
"images/facebook.png"
),
Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
],
),
),
运行它,效果很好 但是第二次我运行代码时,它没有显示 这是我得到的错误:
I / flutter(4784):BY图像资源服务引起的异常提示 ╞═════════════════════════════════════════════════ ═══我/颤振( 4784):解析图像时引发了以下断言: I / flutter(4784):无法加载资产:AssetManifest.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 / flutter( 4784):#393 _runMainZoned。 (dart:ui / hooks.dart:221:5)I / flutter(4784):#394
_startIsolate。 (dart:isolate-patch / isolate_patch.dart:305:19)I / flutter(4784):#395 _RawReceivePortImpl._handleMessage(dart:isolate-patch / isolate_patch.dart:172:12)I / flutter(4784): (从dart:async包中删除了7帧)I / flutter(4784):图像 提供者:AssetImage(捆绑:null,名称:“ images / facebook.png”) I / flutter(4784):映像配置:ImageConfiguration(捆绑: PlatformAssetBundle#b5447(),devicePixelRatio:1.5,I / flutter(4784): 区域设置:en_US,textDirection:TextDirection.ltr,平台:android) I /颤振(4784): ══════════════════════════════════════════════════ ══════════════════════════════════════════════════
答案 0 :(得分:0)
检查此
assets:
- images/facebook.png
确保您拥有完全相同的空格
flutter:
[2 whitespaces or 1 tab]assets:
[4 whitespaces or 2 tabs]- images/facebook.png
每个空间都很重要
答案 1 :(得分:0)
我的代码:
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
答案 2 :(得分:0)
请确保您在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
运行
flutter clean
flutter pub get
在您的终端中
答案 3 :(得分:0)
1)。创建名为images的文件夹 2)。添加要添加的图像 3)。像这样在pubspec中添加 资产: -images / xyz.png 4)点击Package得到 5)运行该应用程序(先杀死应用程序并运行)。
答案 4 :(得分:0)
这个问题最近发生在我身上。正如@Mohamed Adel回答的那样,您必须保留适当的空格。
您还可以包含整个文件夹eg: images
flutter:
[2 whitespaces]assets:
[4 whitespaces]- images/
如果images文件夹包含子文件夹eg: images/products/
flutter:
[2 whitespaces]assets:
[4 whitespaces]- images/products
在pubspec.yaml
中,使用空格比制表符总是安全的
答案 5 :(得分:0)
步骤1: -创建一个名为资产的目录,如下所示。并将图像添加到此目录。
第2步:
-将您的目录添加到pubspec.yaml。这支持该目录的所有图像。
第3步:
-在终端上运行此命令。
flutter pub get
第4步:
-编写这样的代码。如果要控制图像大小,请使用height和width属性。
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Image.asset("assets/facebook.png"),
),
);
}
}
结果: