如何在Flutter应用程序中将应用程序栏中的资产图像添加为操作图标?

时间:2018-07-05 09:19:47

标签: android flutter flutter-layout flutter-dependencies flutter-animation

问题 我正在尝试在颤动屏幕的应用栏中添加注销图像图标。我创建了一个资产文件夹,并创建了目录images / icons /,并在其中放置了图标。 我在pubspec.yaml文件中提到了它们。 我试图在appbar中实现资产图片,但无法正常工作。

代码

pubspe.yaml


    name: mtrack_notifications
    description: Flutter application for MTrack Notifications 

    dependencies:
      flutter:
        sdk: flutter
      # The following adds the Cupertino Icons font to your application.
      # Use with the CupertinoIcons class for iOS style icons.
      cupertino_icons: ^0.1.2
      http: ^0.11.3+16
      shared_preferences: "^0.4.2"


    dev_dependencies:
      flutter_test:
        sdk: flutter


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

    # The following section is specific to Flutter.
    flutter:

      # The following line ensures that the Material Icons font is
      # included with your application, so that you can use the icons in
      # the material Icons class.
      uses-material-design: true

      # To add assets to your application, add an assets section, like this:
      # assets:
      #  - images/a_dot_burr.jpeg
      #  - images/a_dot_ham.jpeg
      assets:
      - assets/images/icons/like.png
      - assets/images/icons/logout.png
      # An image asset can refer to one or more resolution-specific "variants", see
      # https://flutter.io/assets-and-images/#resolution-aware.

      # For details regarding adding assets from package dependencies, see
      # https://flutter.io/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.io/custom-fonts/#from-packages

Click to see the IDE screenshot here

应用程序条形码




    @override
      Widget build(BuildContext context) {
        //build a form widget using the form key we created above
        return new Scaffold(
          appBar: new AppBar(
            title: new Text(StringRef.appName),
            actions: [

          new Center(
          child:new Text(
            userName,
            textScaleFactor: 1.5,
            style: new TextStyle(
              fontSize: 12.0,
              color: Colors.white,
            ),
          )),
          new IconButton(
            icon: new Icon(Icons.close),
            tooltip: 'Closes application',
            onPressed: () => exit(0),
          ),

          new IconButton(
            icon: new Image.asset('images/icons/logout.png'),
            tooltip: 'Closes application',
            onPressed: () => exit(0),
          ),

            ],
          ),

5 个答案:

答案 0 :(得分:8)

问题出在您提供给IconButton的路径上。

应该是这样。

new IconButton(
            icon: new Image.asset('assets/images/icons/logout.png'),
            tooltip: 'Closes application',
            onPressed: () => exit(0),
          )

答案 1 :(得分:2)

下面是Flutter中带有图标

AppBar 的示例代码
Widget build(BuildContext context) {
  return new Scaffold(
    appBar: AppBar(
      title: new Text('App Name'),
      actions: [
        // action button
        IconButton(
          icon: Image.asset('assets/images/icons/logout.png'),
          onPressed: () { },
        ),

      ],
    ),
  );
}

别忘了像这样在asset中为移动应用徽标添加pubspec.yaml,并在资产目录中添加名为logo.png的图像。

flutter:
  assets:
    - assets/images/icons/logout.png

注意:assets部分的flutter子部分指定应包含在应用程序中的文件。每个资产由资产文件所在的显式路径(相对于pubspec.yaml文件)标识。资产的宣布顺序无关紧要。所使用的实际目录名称(第一个示例中的assets或上一个示例中的directory)无关紧要。

在构建期间,Flutter将资产放入一个称为资产束的特殊档案中,应用程序在运行时从中读取。

答案 2 :(得分:0)

根据Flutter Documentation,您需要包含资产pubspec.yaml中指定的完整路径才能加载:

Image.asset('assets/images/icons/logout.png')

答案 3 :(得分:0)

如果将图像放在文件夹文件夹中,请勿尝试在pubspec.yaml中注册所有图像,然后应注册所有文件夹。像这样

您将图像:hero.png放在文件夹Assets内的Images中。 资产>图片> hero.png

然后您应该将它们写在“ pubspec.yaml”下: '扑:    资产:    -Assets / Images / hero.png'

答案 4 :(得分:0)

对于图像位置,您应该给“-”提供3个空格,并给“-”赋予1个空格 规范。

颤动:

#以下代码行确保“材质图标”字体为

#随应用程序一起提供,以便您可以使用其中的图标

#材质的Icons类。

uses-material-design:true

资产:

- assets/images/icons/like.png

- assets/images/icons/logout.png