Flutter图像处理插件theta的使用

Flutter图像处理插件theta的使用

Banner

pub github discord contributors

开始使用文档示例社区与支持网站

Theta

设计到Flutter只需一个命令。

  • 独角兽? 手动编写整个UI可能会耗费大量时间和成本。通过一个命令即可将设计转化为Flutter。
  • 团队? 个人开发者和团队希望通过更快更直观的方式开发UI。

设计到Flutter

三步流程:

  1. 使用Theta构建您的UI。

    Theta Studio
  2. 导航到Flutter项目并打开终端:

    安装Theta CLI。

    $ dart pub global activate theta_cli
    

    通过项目密钥链接项目。

    $ theta link -k <anon key>
    

    生成文件:

    $ theta gen
    
  3. 使用生成的UI小部件:

    Theta会生成以下文件:

    • /assets
      • /theta_assets
        • theta_preload.json
        • …所有媒体
    • /lib
      • theta_ui_assets.g.dart
      • theta_ui_widgets.g.dart

    您可以像使用普通小部件一样使用它们:

    PaywallWidget(
        initialTheme: ThemeMode.light,
    )
    

    在运行应用之前:

    1. 初始化ThetaClient实例以启动您的项目。在应用程序根目录写入以下代码:

      await initializeThetaClient();
      
    2. pubspec.yaml文件中添加theta_assets文件夹的路径,以便访问小部件数据:

      assets: 
          - assets/theta_assets/
      

祝贺你,现在你有了你的UI 🥳

实时小部件

实时获取后端小部件

您可以轻松地通过设置isLive: true来启用实时功能。

PaywallWidget(
    initialTheme: ThemeMode.light,
    isLive: true,
)

通过将其设为实时,您可以从Theta编辑器中进行A/B测试或实时更新其内容。


贡献

详情请参阅 CONTRIBUTING.md

许可证

Theta 是根据Apache License 2.0许可发布的。详情请参阅 LICENSE


示例代码

import 'package:example/theta_ui_widgets.g.dart';
import 'package:flutter/material.dart';
import 'package:theta/theta.dart';

final date = DateTime.now();

void main() async {
  await initializeThetaClient();
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _controller = UIBoxController();

  [@override](/user/override)
  void initState() {
    super.initState();
    Future.delayed(const Duration(seconds: 5), () {
      _controller.changeTheme(ThemeMode.dark);
    });
  }

  [@override](/user/override)
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    /// ThetaProvider是用于提供项目样式的。
    /// 使用Theta小部件时必须使用它。
    return MaterialApp(
      home: Scaffold(
        /// UIBox是主小部件。
        /// 用于构建UI。
        /// 需要一个组件[name]。
        body: PaywallTeamWidget(
          initialTheme: ThemeMode.light,
          controller: _controller,
          isLive: false,
        ),
      ),
    );
  }
}

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

1 回复

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


Flutter 图像处理插件 theta 的使用

theta 是一个用于在 Flutter 应用中处理图像的插件。它提供了一系列功能,如调整图像的亮度、对比度、饱和度,应用滤镜,裁剪等。下面是如何在 Flutter 项目中使用 theta 插件的步骤。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  theta: ^0.1.0  # 请确保使用最新的版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在需要使用 theta 的 Dart 文件中导入插件:

import 'package:theta/theta.dart';

3. 基本使用

theta 插件提供了多种图像处理方法。以下是一些常见的使用示例:

调整亮度和对比度:

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

class ImageProcessingPage extends StatelessWidget {
  final String imagePath = 'assets/sample_image.jpg';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Image Processing with Theta'),
      ),
      body: Center(
        child: FutureBuilder<Uint8List>(
          future: Theta.processImage(
            imagePath,
            brightness: 0.5,  // 亮度调整,范围为 -1.0 到 1.0
            contrast: 1.2,     // 对比度调整,范围为 -1.0 到 1.0
          ),
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.done) {
              if (snapshot.hasData) {
                return Image.memory(snapshot.data!);
              } else {
                return Text('Failed to load image');
              }
            } else {
              return CircularProgressIndicator();
            }
          },
        ),
      ),
    );
  }
}

应用滤镜:

Future<Uint8List> applyFilter(String imagePath) async {
  return await Theta.applyFilter(imagePath, FilterType.sepia);
}

裁剪图像:

Future<Uint8List> cropImage(String imagePath) async {
  return await Theta.crop(imagePath, Rect.fromLTWH(50, 50, 200, 200));
}

4. 运行应用

确保你的项目中有 assets/sample_image.jpg 图像文件,并在 pubspec.yaml 中正确配置了 assets:

flutter:
  assets:
    - assets/sample_image.jpg
回到顶部