如何在扑动中添加图像

我是第一次开发扑动应用程序。.我在添加图像方面有问题。我有以下问题:

  1. 在哪里创建图像文件夹?
  2. 在 pubspec.ymal 中何处添加资产标记?
  3. 是否需要任何资产文件夹?

我试过:

 assets:
- images/lake.jpg

Ymal:

完整档案:

name: my_flutter_app
description: A new Flutter application.


dependencies:
flutter:
sdk: flutter


cupertino_icons: ^0.1.2


dev_dependencies:
flutter_test:
sdk: flutter


flutter:
uses-material-design: true,
assets:
- images/lake.jpg

错误日志:

#/properties/flutter/properties/uses-material-design: type: wanted [boolean] got true,
Error detected in pubspec.yaml:
Error building assets


FAILURE: Build failed with an exception.


* Where:
Script '/home/abc/Downloads/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 435


* What went wrong:
Execution failed for task ':app:flutterBuildDebug'.
> Process 'command '/home/abc/Downloads/flutter/bin/flutter'' finished with non-zero exit value 1


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.


* Get more help at https://help.gradle.org


BUILD FAILED in 1s
Finished with error: Gradle build failed: 1

我的主要代码是:

// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.


import 'package:flutter/material.dart';
// Uncomment lines 7 and 10 to view the visual layout at runtime.
//import 'package:flutter/rendering.dart' show debugPaintSizeEnabled;


void main() {
//debugPaintSizeEnabled = true;
runApp(new MyApp());
}


class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
Widget titleSection = new Container(
padding: const EdgeInsets.all(32.0),
child: new Row(
children: [
new Expanded(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
new Container(
padding: const EdgeInsets.only(bottom: 8.0),
child: new Text(
'Oeschinen Lake Campground',
style: new TextStyle(
fontWeight: FontWeight.bold,
),
),
),
new Text(
'Kandersteg, Switzerland',
style: new TextStyle(
color: Colors.grey[500],
),
),
],
),
),
new Icon(
Icons.star,
color: Colors.red[500],
),
new Text('41'),
],
),
);


Column buildButtonColumn(IconData icon, String label) {
Color color = Theme.of(context).primaryColor;


return new Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
new Icon(icon, color: color),
new Container(
margin: const EdgeInsets.only(top: 8.0),
child: new Text(
label,
style: new TextStyle(
fontSize: 12.0,
fontWeight: FontWeight.w400,
color: color,
),
),
),
],
);
}


Widget buttonSection = new Container(
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildButtonColumn(Icons.call, 'CALL'),
buildButtonColumn(Icons.near_me, 'ROUTE'),
buildButtonColumn(Icons.share, 'SHARE'),
],
),
);


Widget textSection = new Container(
padding: const EdgeInsets.all(32.0),
child: new Text(
'''
Lake Oeschinen lies at the foot of the Blüemlisalp in the Bernese Alps. Situated 1,578 meters above sea level, it is one of the larger Alpine Lakes. A gondola ride from Kandersteg, followed by a half-hour walk through pastures and pine forest, leads you to the lake, which warms to 20 degrees Celsius in the summer. Activities enjoyed here include rowing, and riding the summer toboggan run.
''',
softWrap: true,
),
);


return new MaterialApp(
title: 'Flutter Demo',
home: new Scaffold(
appBar: new AppBar(
title: new Text('Top Lakes'),
),
body: new ListView(
children: [
new Image.asset(
'images/lake.jpg',
width: 600.0,
height: 240.0,
fit: BoxFit.cover,
),
titleSection,
buttonSection,
textSection,
],
),
),
);
}
}

我指的是这个教程 翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳 https://flutter.io/tutorials/layout/

我还想问,是否有任何工具,清洁重建在颤动,因为我找不到任何选择这一点。.

如果你能帮忙,我将不胜感激。

谢谢!

316676 次浏览

我认为这个错误是由冗余 ,引起的

flutter:
uses-material-design: true, # <<< redundant , at the end of the line
assets:
- images/lake.jpg

我还建议在包含 pubspec.yaml文件的目录中创建一个 assets文件夹,并将 images移到那里并使用

flutter:
uses-material-design: true
assets:
- assets/images/lake.jpg

如果将资产放在其他位置,则 assets目录将获得一些额外的 IDE 支持。

问题在于你的 pubspec.yaml,这里你需要删除最后一个逗号。

uses-material-design: true,

如何在应用程序中包含图片

1. 创建一个 assets/images文件夹

  • 这应该位于项目的根目录中,与 pubspec.yaml文件在同一个文件夹中。
  • 在 Android Studio 中,您可以在 Project 视图中右键单击
  • 你不必称之为 assetsimages。你甚至不需要使 images成为一个子文件夹。但是,无论您使用什么名称,这都是您将在 pubspec.yaml文件中注册的名称。

2. 将图像添加到新文件夹中

  • 你可以只复制你的图像到 assets/images。例如,lake.jpg的相对路径是 assets/images/lake.jpg

3. 在 pubspec.yaml中注册资产文件夹

  • 打开位于项目根目录中的 pubspec.yaml文件。

  • 像下面这样在 flutter部分添加一个 assets小节:

      flutter:
    assets:
    - assets/images/lake.jpg
    
  • 如果你有多个想要包含的图像,那么你可以省略文件名,只使用目录名(包括最终的 /) :

      flutter:
    assets:
    - assets/images/
    

在代码中使用图像

  • 使用 Image.asset('assets/images/lake.jpg')获取 Image 小部件中的资产。

  • 整个 main.dart文件都在这里:

      import 'package:flutter/material.dart';
    
    
    void main() => runApp(MyApp());
    
    
    class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
    return MaterialApp(
    home: Scaffold(
    appBar: AppBar(
    title: Text("Image from assets"),
    ),
    body: Image.asset('assets/images/lake.jpg'), //   <--- image
    ),
    );
    }
    }
    

5、重新启动你的应用程序

当对 Pubspec.yaml进行更改时,我发现我经常需要完全停止我的应用程序并重新启动它,特别是在添加资产时。否则我就会撞车。

现在运行应用程序,你应该有这样的东西:

enter image description here

进一步阅读

  • 请参阅 文件了解如何为不同密度的图像提供替代图像。

视频

这里的第一个视频详细介绍了如何在应用程序中包含图像。第二个视频更多地介绍了如何调整它们的外观。

另一种将图片放入应用程序的方式(对我来说就是这样) :

1-创建一个资产/图片文件夹

将您的图像添加到新文件夹

3-在 pubspec.yaml 中注册资产文件夹

4-使用以下代码:

import 'package:flutter/material.dart';


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


class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {


var assetsImage = new AssetImage('assets/images/mountain.jpg'); //<- Creates an object that fetches an image.
var image = new Image(image: assetsImage, fit: BoxFit.cover); //<- Creates a widget that displays an image.


return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Climb your mountain!"),
backgroundColor: Colors.amber[600], //<- background color to combine with the picture :-)
),
body: Container(child: image), //<- place where the image appears
),
);
}
}

Climb your mountain!

他们不需要创建资产目录和下面的图像目录,然后你把图像。 更好的做法是在 pubspec.yaml 存在的项目中创建 Images 目录,并将图像放入其中 并像教程/文档中显示的那样访问这些图像

资产: - images/lake.jpg//inside pubspec.yaml

在 pubspec.yaml 文件中添加资产目录时,需要更多地关注空格

这是不对的

flutter:
assets:
- assets/images/lake.jpg

这是正确的方法,

flutter:
assets:
- assets/images/
  1. 在项目的根级别创建 images文件夹。

    enter image description here

    enter image description here

  2. 在这个文件夹中放置您的图像,它应该看起来像

    enter image description here

  3. 转到您的 pubspec.yaml文件,添加 assets头,并密切注意所有的空格。

    flutter:
    
    
    uses-material-design: true
    
    
    # add this
    assets:
    - images/profile.jpg
    
  4. Tap on Packages get at the top right corner of the IDE.

    enter image description here

  5. Now you can use your image anywhere using

    Image.asset("images/profile.jpg")
    

创建与库级别相同的资产目录

像这样

projectName
-android
-ios
-lib
-assets
-pubspec.yaml

然后是你的阴毛,我喜欢

  flutter:
assets:
- assets/images/

现在你可以使用 Image.asset("/assets/images/")

要在 Flutter 中使用图像,请执行以下步骤。

在资产文件夹中创建一个名为 影像目录文件夹,如下图所示enter image description here

把你想要的图片放到图片文件夹。

3. 打开 < strong > pubpsec.yaml 文件,并添加声明图像enter image description here

4. 在代码中使用此图像作为。

  Card(
elevation: 10,
child: Container(
decoration: BoxDecoration(
color: Colors.orangeAccent,
image: DecorationImage(
image: AssetImage("assets/images/dropbox.png"),
fit: BoxFit.fitWidth,
alignment: Alignment.topCenter,
),
),
child: Text("$index",style: TextStyle(color: Colors.red,fontSize: 16,fontFamily:'LangerReguler')),
alignment: Alignment.center,
),
);

如果图像是在一个包的依赖项中,你还应该提供包的名称,事件,如果你是从相同的依赖项引用图像!

Image.asset("assets/pics/events_empty.png", package: "ui_elements"),

参考: 包依赖中的资产映像

- > 跟随以下步骤 一个或多个图像插入:

-> Create 'assets/images' folder as in project module.
-> put images which you want.
-> use of image using this syntax. ex.
- Image.asset('assets/images/tony.jpg')


-> use image avatar which you want like, circle, square and much more as your need.
-> Open 'pubspec.yaml' file
-> write the code in 'flutter:' section. ex.
-------------------------------
uses-material-design: true
assets:
- assets/images/             // if multiple images you have then
- assets/images/imagename.extension     // if single images you have then
-------------------------------
-> click on 'PUB GET' button which occurs on Right side of Screen above.
-> Run App.
-> if you get any issue then
-> Go to file -> Invalid caches/Restart -> Invalid Caches/Restart button
-> Done.

请看下面的图片,以便更好地了解实现。

   •• Here, add image file like below. ••

enter image description here

   •• Here, add image file Description in PUBSPEC.YAML file like below. ••

enter image description here

完成

当逗号在下面一行的末尾时出错

uses-material-design: true,

enter image description here

assets:缩进后的行不正确时,它将抛出以下错误

enter image description here

如果缩进如下所示被修正,那么错误是固定的。

enter image description here

如果资产文件没有添加,然后它突出显示,与黄色的背景,但 Pub get不抛出错误,但会有一个错误在安装过程中。

简而言之,代码缩进和语法很重要

您可以创建一个文件夹并引用它,如下所示

您可以使用这个来查看资产内部的所有访问,因为可能存在图像、徽标、图标等文件夹。.

在项目的根目录中创建资产文件夹

MyProject
android
assets
ios
lib
test
web
windows
.gitignore
pubspec.yaml

在你的阴部 Yaml 有

assets:
#   - images/a_dot_burr.jpeg
#  - images/a_dot_ham.jpeg

将最后两行替换为‘ asset/’,以便能够直接访问资产内的所有内容

  • 如果您在资产中有直接的图像

    assets:
    - assets/
    
  • 或者资产中是否有子文件夹

    assets:
    - assets/folder1/
    - assets/folder2/
    - assets/folder3/
    

请确保在主目录中创建资产文件夹,而不是在 lib文件夹中。

enter image description here

  1. 创建一个资产/图像文件夹并将您的图像添加到该文件夹

enter image description here

  1. 在 pubspec.yaml 中注册资产文件夹

    颤动: 资产: - asset/images/placeholder _ Circle _ image. png

如果你有多个图像

  flutter:
assets:
- assets/images/

enter image description here

  1. 在代码中使用图像

    资产( ‘ asset/images/item _ entry/add _ car _ video. png’, 宽度: 100, 身高: 100, 适合: BoxFit.cover, AcheWidth: 100 * MediaQuery.of (context) . devicePixelRatio.round () , ),

enter image description here