Flutter图片加载与显示插件imagekit_io的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter图片加载与显示插件imagekit_io的使用

使用

让我们来看看如何使用ImageKit.io Flutter插件。

ImageKit.io(
  file,
  // folder: "folder_name/nested_folder", (可选)
  privateKey: "PrivateKey", // (保密)
  onUploadProgress: (progressValue) {
    if (kDebugMode) {
      print(progressValue);
    }
  },

).then((ImagekitResponse data) {
  /// 获取从[ImageKit.io]上传的图像文件链接
  /// 然后保存在任何地方。例如[Firebase, MongoDB]等。
  if (kDebugMode) {
    print(data.url!); // (你将从ImageKit获取所有响应数据)
    // print(data.fileId!);
  }
});

你也可以使用图像/视频链接上传到ImageKit.io。

ImageKit.url(
  url,
  // folder: "folder_name/nested_folder", (可选)
  privateKey: "PrivateKey", // (保密)
  onUploadProgress: (progressValue) {
    if (kDebugMode) {
      print(progressValue);
    }
  },

).then((ImagekitResponse data) {
  /// 获取从[ImageKit.io]上传的图像文件链接
  /// 然后保存在任何地方。例如[Firebase, MongoDB]等。
  if (kDebugMode) {
    print(data.url!); // (你将从ImageKit获取所有响应数据)
  }
});

完整示例

以下是完整的示例代码,展示了如何使用imagekit_io插件来选择、上传和显示图片:

import 'dart:html';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:imagekit_io/imagekit_io.dart';

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  double linearProgress = 0.0;
  Uint8List? file;
  String? fileName;
  String url = "";

  Future pickImage() async {
    try {
      FilePickerResult? result = await FilePicker.platform.pickFiles(type: FileType.image);
      if (result == null) return;
      final Uint8List imageTemp = result.files.first.bytes!;
      setState(() {
        fileName = result.files.first.name;
        file = imageTemp;
      });
    } on PlatformException catch (e) {
      debugPrint(e.toString());
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("ImageKit.io"),
      ),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(14.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              if (file != null)
                SizedBox(
                  height: 240,
                  child: Row(
                    children: [
                      Expanded(
                        child: Column(
                          children: [
                            Card(
                              child: Image.memory(
                                file!,
                                height: 200,
                                width: double.infinity,
                              ),
                            ),
                            Text("FileName: $fileName"),
                          ],
                        ),
                      ),
                      if (url.isNotEmpty)
                        Expanded(
                          child: Column(
                            children: [
                              Card(
                                child: Image.network(
                                  url,
                                  height: 200,
                                  width: double.infinity,
                                ),
                              ),
                              const Text("Uploaded Image Preview"),
                            ],
                          ),
                        ),
                    ],
                  ),
                ),
              const SizedBox(height: 10),
              LinearProgressIndicator(value: linearProgress),
              const SizedBox(height: 10),
              const Text(
                'ImageKit.io Upload Progress',
              ),
              const SizedBox(height: 10),
              ElevatedButton(
                onPressed: () {
                  pickImage();
                },
                child: const Text("Select Image"),
              )
            ],
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          ImageKit.io(
            file!,
            fileName: fileName!,
            privateKey: "PrivateKey", // (保密)
            onUploadProgress: (progressValue) {
              if (kDebugMode) {
                print(progressValue);
              }
              setState(() {
                linearProgress = progressValue;
              });
            },
          ).then((ImagekitResponse data) {
            /// 获取从[ImageKit.io]上传的图像文件链接
            /// 然后保存在任何地方。例如[Firebase, MongoDB]等。
            if (kDebugMode) {
              print(data.url!);
              print(data.fileId!);
            }
            setState(() {
              url = data.url!;
            });
          });
        },
        tooltip: 'Submit',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter图片加载与显示插件imagekit_io的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter图片加载与显示插件imagekit_io的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter应用中使用imagekit_io插件来加载和显示图片的示例代码。imagekit_io是一个用于从ImageKit服务加载和显示图片的Flutter插件。

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

dependencies:
  flutter:
    sdk: flutter
  imagekit_io: ^x.y.z  # 请将x.y.z替换为最新版本号

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

接下来,在你的Flutter应用中,你可以按照以下步骤使用imagekit_io插件:

  1. 导入包

在你的Dart文件中导入imagekit_io包:

import 'package:imagekit_io/imagekit_io.dart';
  1. 配置ImageKit

你需要提供你的ImageKit公钥和私钥,以及可选的配置项(如URL端点)。你可以在一个单独的配置文件中设置这些值,或者直接在代码中设置。

void main() {
  // 设置ImageKit配置
  ImageKitConfiguration.instance
    ..publicKey = 'your_public_key'
    ..privateKey = 'your_private_key'
    ..urlEndpoint = 'https://your-imagekit-endpoint.imagekit.io';

  runApp(MyApp());
}
  1. 加载和显示图片

使用ImageKitImage小部件来加载和显示图片。你可以通过传递图片的路径和其他可选参数来定制图片的加载方式。

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

void main() {
  // 设置ImageKit配置
  ImageKitConfiguration.instance
    ..publicKey = 'your_public_key'
    ..privateKey = 'your_private_key'
    ..urlEndpoint = 'https://your-imagekit-endpoint.imagekit.io';

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('ImageKit Demo'),
        ),
        body: Center(
          child: ImageKitImage(
            path: 'your_image_path', // 替换为你的图片路径
            options: ImageKitOptions(
              transformation: [
                Transformation().setWidth(300).setHeight(300), // 可选:设置图片尺寸
              ],
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中,ImageKitImage小部件用于加载和显示指定路径的图片。你可以通过options参数来设置图片的转换选项,比如调整尺寸、裁剪等。

请确保将your_public_keyyour_private_keyhttps://your-imagekit-endpoint.imagekit.ioyour_image_path替换为你实际的ImageKit公钥、私钥、URL端点和图片路径。

这样,你的Flutter应用就能够使用imagekit_io插件来加载和显示来自ImageKit服务的图片了。

回到顶部