Flutter图片缩放插件nine_scaling_image的使用

Flutter图片缩放插件nine_scaling_image的使用

该插件允许用户在Flutter中使用九宫格缩放图像。

图像示例

开始使用

pubspec.yaml文件中添加nine_scaling_image依赖:

dependencies:
  nine_scaling_image: any

然后,在pubspec.yaml中添加你的图片资源路径:

flutter:
  assets:
    - assets/sampleimage.png

接下来,导入包并使用NineScalingImage类:

NineScalingImage img = NineScalingImage(assetPath: 'assets/sampleimage.png', pieceSize: const Size.square(5));

你可以设置以下参数:

  • assetPath(必需)

    • 图片的路径。
  • pieceSize(必需)

    • 九宫格分割块的大小。
  • centerColor(可选)

    • 填充中心区域的颜色。
  • dstPieceScale(可选)

    • 目标图像与源图像的比例。
  • child(可选)

    • 九宫格对象中的子部件。

完整示例

import 'package:flutter/material.dart';
import 'package:nine_scaling_image/nine_scaling_image.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Flutter Example',
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('Flutter Plugin Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(10),
          child: Row(
              children: [
                Column(
                  children: [
                    const Text("Source Image \n 4x Scaled"),
                    SizedBox(
                      width: 120,
                      height: 120,
                      child: Stack(
                        fit: StackFit.expand,
                        children: [
                          Image.asset('assets/sampleimage.png', fit: BoxFit.contain,
                            isAntiAlias: false,
                            filterQuality: FilterQuality.none,),
                          const Align(
                            alignment: Alignment(-0.8, -0.8),
                            child: Text("piece 4x4", style: TextStyle(color: Colors.red),),
                          ),
                          Align(
                            alignment: const Alignment(-1.0, -1.0),
                            child: Container(
                              width: 16,
                              height: 16,
                              decoration: BoxDecoration(
                                border: Border.all(color: Colors.red),
                              ),
                            ),
                          ),
                          Align(
                            alignment: const Alignment(1.0, -1.0),
                            child: Container(
                              width: 16,
                              height: 16,
                              decoration: BoxDecoration(
                                border: Border.all(color: Colors.red),
                              ),
                            ),
                          ),
                          Align(
                            alignment: const Alignment(1.0, 1.0),
                            child: Container(
                              width: 16,
                              height: 16,
                              decoration: BoxDecoration(
                                border: Border.all(color: Colors.red),
                              ),
                            ),
                          ),
                          Align(
                            alignment: const Alignment(-1.0, 1.0),
                            child: Container(
                              width: 16,
                              height: 16,
                              decoration: BoxDecoration(
                                border: Border.all(color: Colors.red),
                              ),
                            ),
                          ),
                        ],
                      )

                    )
                  ],
                ),
                const Column(
                  children: [
                    Text("Nine Scaling Image \n (dstPieceScale: 1)"),
                    SizedBox(
                      width: 120,
                      height: 120,
                      child: NineScalingImage(assetPath: 'assets/sampleimage.png', pieceSize: Size.square(5),)
                    )
                  ],
                ),
                const Column(
                  children: [
                    Text("Nine Scaling Image \n (dstPieceScale: 4)"),
                    SizedBox(
                        width: 120,
                        height: 120,
                        child: NineScalingImage(assetPath: 'assets/sampleimage.png',
                          pieceSize: Size.square(5), dstPieceScale: 4,)
                    )
                  ],
                ),
                const Column(
                  children: [
                    Text("Nine Scaling Image \n (dstPieceScale: 8)"),
                    SizedBox(
                        width: 120,
                        height: 120,
                        child: NineScalingImage(assetPath: 'assets/sampleimage.png',
                          pieceSize: Size.square(5), dstPieceScale: 8,)
                    )
                  ],
                ),
                const Column(
                  children: [
                    Text("Nine Scaling Image \n with child text widget"),
                    SizedBox(
                        width: 120,
                        height: 120,
                        child: NineScalingImage(assetPath: 'assets/sampleimage.png',
                          pieceSize: Size.square(5), child: Text("child text"),)
                    )
                  ],
                ),
                Column(
                  children: [
                    const Text("Nine Scaling Image \n with child Container widget"),
                    SizedBox(
                        width: 120,
                        height: 120,
                        child: NineScalingImage(assetPath: 'assets/sampleimage.png',
                          pieceSize: Size.square(5), child: Container(
                            color: Colors.red,
                          ),)
                    )
                  ],
                ),
                const Column(
                  children: [
                    Text("Nine Scaling Image \n with centerColor"),
                    SizedBox(
                        width: 120,
                        height: 120,
                        child: NineScalingImage(assetPath: 'assets/sampleimage.png',
                          pieceSize: Size.square(5),
                            centerColor: Colors.red,
                        )
                    )
                  ],
                )

              ]
          )




        )
    );
  }
}

更多关于Flutter图片缩放插件nine_scaling_image的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter图片缩放插件nine_scaling_image的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


nine_scaling_image 是一个用于 Flutter 的图片缩放插件,它允许你在应用中实现类似于 Android 中的 NinePatch 图片缩放效果。NinePatch 是一种特殊的 PNG 图片格式,它定义了图片的可拉伸区域和内容区域,使得图片在缩放时能够保持特定的部分不变形。

安装 nine_scaling_image 插件

首先,你需要在 pubspec.yaml 文件中添加 nine_scaling_image 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  nine_scaling_image: ^1.0.0  # 请检查最新版本

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

使用 nine_scaling_image

以下是一个简单的示例,展示了如何使用 nine_scaling_image 插件来加载和缩放一个 NinePatch 图片。

import 'package:flutter/material.dart';
import 'package:nine_scaling_image/nine_scaling_image.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Nine Scaling Image Example'),
        ),
        body: Center(
          child: NineScalingImage(
            image: AssetImage('assets/example.9.png'),  // 你的 NinePatch 图片路径
            width: 200.0,  // 设置图片宽度
            height: 100.0, // 设置图片高度
          ),
        ),
      ),
    );
  }
}
回到顶部