Flutter资源按钮插件asset_button的使用

Flutter资源按钮插件asset_button的使用

asset_button 插件提供了用于创建具有资源图像的按钮。这种按钮可以使用两张图片:一张是正常状态下的图片(必需),另一张是鼠标悬停时的图片(可选)。正常状态下显示的图片为默认图片,当鼠标悬停在按钮区域上时,会显示悬停图片。

点击按钮时,会播放一个缩小动画。

示例应用

使用独立的图片

// 创建一个使用独立图片的按钮
WidgetImageButton(
  imageNormal: WidgetAssetImage(assetPath: 'assets/images/icon_normal.png'), // 正常状态下的图片
  imageHover: WidgetAssetImage(assetPath: 'assets/images/icon_hover.png'), // 鼠标悬停时的图片
  onTap: () {
    print('独立图标按钮'); // 点击事件
  },
),

从一张整图中裁剪图片

// 创建一个从一张整图中裁剪图片的按钮
WidgetImageButton(
  imageNormal: WidgetAssetImage(
      assetPath: 'assets/images/icons.png', // 整张图片路径
      cropRect: Rect.fromLTWH(58, 165, 95, 95)), // 裁剪矩形
  imageHover: WidgetAssetImage(
      assetPath: 'assets/images/icons.png',
      cropRect: Rect.fromLTWH(170, 164, 95, 95)),
  onTap: () {
    print('从一张图片中裁剪的图标按钮'); // 点击事件
  },
)

完整示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用程序中使用 asset_button 插件。

import 'package:asset_button/image_loader.dart'; // 导入图片加载工具
import 'package:asset_button/widget_asset_image.dart'; // 导入资产图像组件
import 'package:asset_button/widget_image_button.dart'; // 导入按钮组件
import 'package:flutter/material.dart'; // 导入 Flutter 基础库

void main() {
  runApp(MyApp()); // 启动应用
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(home: MyHomePage()); // 设置主页
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState(); // 创建状态对象
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('图片按钮示例')), // 设置应用栏标题
      body: Container(
        color: Colors.blue[900], // 设置背景颜色
        width: double.infinity, // 设置宽度为屏幕宽度
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly, // 垂直居中对齐
          children: [
            // 直接加载图片
            FutureBuilder<Image?>(
              builder: (context, snap) {
                if (!snap.hasData) return Container(); // 如果没有数据则返回空容器
                final image = snap.data;
                if (image == null) return Container();
                return Container(child: image); // 显示图片
              },
              future: ImageLoader.load(
                assetPath: 'assets/images/bkg_code.png', // 图片路径
                cropRect: Rect.fromLTWH(0, 0, 100, 100), // 裁剪矩形
              ),
            ),
            // 背景图片
            WidgetAssetImage(
              assetPath: 'assets/images/bkg_code.png', // 图片路径
              // 按设备比例缩放
              scaleDeviceRatio: false,
            ),
            // 独立图标按钮
            WidgetImageButton(
              imageNormal:
                  WidgetAssetImage(assetPath: 'assets/images/icon_normal.png'), // 正常状态下的图片
              imageHover:
                  WidgetAssetImage(assetPath: 'assets/images/icon_hover.png'), // 鼠标悬停时的图片
              // 关闭动画
              animate: false,
              onTap: () {
                print('独立图标按钮'); // 点击事件
              },
            ),
            // 从一张整图中裁剪的图标按钮
            WidgetImageButton(
              imageNormal: WidgetAssetImage(
                  assetPath: 'assets/images/icons.png', // 整张图片路径
                  cropRect: Rect.fromLTWH(58, 165, 95, 95)), // 裁剪矩形
              imageHover: WidgetAssetImage(
                  assetPath: 'assets/images/icons.png',
                  cropRect: Rect.fromLTWH(170, 164, 95, 95)),
              onTap: () {
                print('从一张图片中裁剪的图标按钮'); // 点击事件
              },
            )
          ],
        ),
      ),
    );
  }
}

更多关于Flutter资源按钮插件asset_button的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter资源按钮插件asset_button的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用asset_button插件的一个示例代码案例。asset_button是一个用于创建带有自定义图标(资产)按钮的Flutter插件。

首先,确保你已经在pubspec.yaml文件中添加了asset_button依赖项:

dependencies:
  flutter:
    sdk: flutter
  asset_button: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get命令来安装依赖项。

接下来,在你的Flutter项目中,你可以按照以下步骤使用AssetButton

  1. pubspec.yaml文件中添加图标资产

    假设你有一个名为icon.png的图标文件,你需要将它放在assets文件夹中,并在pubspec.yaml文件中声明它:

    flutter:
      assets:
        - assets/icon.png
    
  2. 在Dart文件中使用AssetButton

    下面是一个完整的示例代码,展示了如何使用AssetButton

    import 'package:flutter/material.dart';
    import 'package:asset_button/asset_button.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Asset Button Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Asset Button Demo'),
          ),
          body: Center(
            child: AssetButton(
              assetPath: 'assets/icon.png', // 图标资产路径
              width: 100,
              height: 100,
              onPressed: () {
                // 按钮点击事件处理
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Button Pressed!')),
                );
              },
              borderRadius: BorderRadius.circular(12),
              backgroundColor: Colors.blue,
              iconColor: Colors.white,
            ),
          ),
        );
      }
    }
    

在这个示例中:

  • assetPath属性指定了图标资产的路径。
  • widthheight属性设置了按钮的宽度和高度。
  • onPressed属性是一个回调函数,当按钮被点击时会触发。
  • borderRadius属性设置了按钮的圆角半径。
  • backgroundColor属性设置了按钮的背景颜色。
  • iconColor属性设置了图标的颜色。

这个示例展示了如何使用asset_button插件创建一个带有自定义图标的按钮,并在按钮点击时显示一个简单的Snackbar消息。你可以根据需要调整这些属性来实现不同的按钮样式和功能。

回到顶部