Flutter蔗糖管理或功能增强插件sucrose的使用

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

Flutter蔗糖管理或功能增强插件sucrose的使用

Sucrose

Sucrose 是一个为 Xendit 和其他支付网关设计的桥梁支付网关。

GitHub Repo Size Pub Version GitHub top language Codacy grade

可用的支付网关

  • ✅ Xendit (进行中)
  • ✅ Midtrans (进行中)

安装

pubspec.yaml 文件中添加 sucrose 插件:

flutter pub add sucrose

入门指南

初始化 Xendit

import 'package:sucrose/sucrose.dart';

final sucrose = Sucrose.initXendit(xenditApiKey: "YOUR_API_KEY");

初始化 Midtrans

import 'package:sucrose/sucrose.dart';

final sucrose = Sucrose.initMidtrans(
    midtransApiKey: "YOUR_API_KEY",
    environment: MidtransEnvironment.SANDBOX,
    debug: true,
);

使用 Xendit 创建发票

final response = await sucrose.xendit.createInvoice(
  request: XenditInvoiceRequest(
    externalId: "ref 13123213",
    amount: 10000,
    description: "your description goes here",
    payerEmail: "hello@mail.com",
    items: [
      XenditInvoiceItem(
        name: "item 1",
        price: 10000,
        quantity: 1,
        category: "meow",
        url: "https://google.com",
      ),
    ],
  ),
);

使用 Midtrans 创建 Snap 交易

final response = await sucrose.midtrans.createSnapTransaction(
  request: MidtransSnapTransactionRequest(
    transactionDetails: MidtransTransactionDetail(
      orderId: "Inv-${DateTime.now().millisecondsSinceEpoch}",
      grossAmount: 12500,
    ),
    itemDetails: [
      MidtransItemDetail(
        id: "021930129031",
        name: "Steam Wallet IDR 12K",
        price: 12500,
        quantity: 1,
      ),
    ],
    customerDetails: MidtransCustomerDetails(
      email: "test@mail.com",
      firstName: "Test",
      lastName: "Test",
      phone: "08123456789",
      shippingAddress: MidtransShippingAddress(
        address: "Jalan Teknologi Indonesia",
        city: "Jakarta",
        countryCode: "IDN",
        firstName: "Test",
        lastName: "Test",
        phone: "08123456789",
        postalCode: "12345",
      ),
      billingAddress: MidtransBillingAddress(
        address: "Jalan Teknologi Indonesia",
        city: "Jakarta",
        countryCode: "IDN",
        firstName: "Test",
        lastName: "Test",
        phone: "08123456789",
        postalCode: "12345",
      ),
    ),
  ),
);

示例代码

以下是完整的示例代码,展示了如何使用 sucrose 插件来创建一个支付交易:

import 'package:sucrose/sucrose.dart';
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';

void main() async {
  final sucrose = Sucrose.initMidtrans(
    midtransApiKey: "SB-Mid-server-9OwPRJdQERWtpPL5xAOdzARo",
    environment: MidtransEnvironment.SANDBOX,
    debug: true,
  );

  Logger logger = Logger(
    printer: PrettyPrinter(),
  );
  try {
    final response = await sucrose.midtrans.chargeKredivo(
      request: MidtransKredivoRequest(
        customerDetails: MidtransCustomerDetails(
          email: "test@mail.com",
          firstName: "Test",
          lastName: "Test",
          phone: "08123456789",
          shippingAddress: MidtransShippingAddress(
            address: "Jalan Teknologi Indonesia",
            city: "Jakarta",
            countryCode: "IDN",
            firstName: "Test",
            lastName: "Test",
            phone: "08123456789",
            postalCode: "12345",
          ),
          billingAddress: MidtransBillingAddress(
            address: "Jalan Teknologi Indonesia",
            city: "Jakarta",
            countryCode: "IDN",
            firstName: "Test",
            lastName: "Test",
            phone: "08123456789",
            postalCode: "12345",
          ),
        ),
        itemDetails: [
          MidtransItemDetail(
            name: "Steam Wallet Code",
            price: 10000,
            quantity: 1,
          )
        ],
        sellerDetails: [
          MidtransSellerDetail(
            id: "str-123",
            name: "Store 123",
            url: "https://www.store123.com",
            email: "store123@mail.com",
            address: MidtransAddress(
              address: "Jalan Teknologi Indonesia",
              city: "Jakarta",
              countryCode: "IDN",
              firstName: "Test",
              lastName: "Test",
              phone: "08123456789",
              postalCode: "12345",
            ),
          ),
        ],
        customExpiry: MidtransCustomExpiry(
          expiryDuration: 60,
          unit: "minute",
        ),
        transactionDetails: MidtransTransactionDetail(
          orderId: "inv-${DateTime.now().millisecondsSinceEpoch}",
          grossAmount: 10000,
        ),
      ),
    );

    // final response = await sucrose.midtrans.registerCard(
    //   clientKey: "SB-Mid-client-AkJUcZx3FXE7K0hY",
    //   cardNumber: "5211 1111 1111 1117",
    //   cardExpMonth: "12",
    //   cardExpYear: "2024",
    //   cardCvv: "123",
    // );
    logger.i(response.toJson());
  } catch (e) {
    if (e is MidtransException) {
      logger.e(e.statusCode);
      logger.e(e.statusMessage);
      logger.e(e.validationMessages);
    } else {
      logger.e(e.toString());
    }
  }

  runApp(const MainApp());
}

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

  [@override](/user/override)
  State<MainApp> createState() => _MainAppState();
}

class _MainAppState extends State<MainApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(body: Center(child: Text("Hello"))),
    );
  }
}

更多关于Flutter蔗糖管理或功能增强插件sucrose的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter蔗糖管理或功能增强插件sucrose的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成和使用蔗糖管理或功能增强插件 sucrose 的代码案例。请注意,由于 sucrose 并非一个广为人知的官方或广泛使用的Flutter插件,我假设它是一个自定义的或特定用途的插件,并且以下代码是一个假设性的示例。在实际应用中,你需要根据 sucrose 插件的具体文档和API进行调整。

1. 添加依赖

首先,假设 sucrose 插件已经发布在 pub.dev 上,你需要在 pubspec.yaml 文件中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  sucrose: ^x.y.z  # 替换为实际版本号

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

2. 导入插件

在你的 Dart 文件中导入 sucrose 插件:

import 'package:sucrose/sucrose.dart';

3. 初始化插件

根据插件的文档,你可能需要在应用启动时初始化它。假设 sucrose 有一个初始化方法:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Sucrose.instance.initialize(); // 假设这是初始化方法
  runApp(MyApp());
}

4. 使用插件功能

假设 sucrose 插件提供了一些增强功能,比如数据管理和UI组件。以下是一个简单的使用示例:

数据管理示例

class _MyHomePageState extends State<MyHomePage> {
  SucroseDataManager? _dataManager; // 假设这是插件提供的数据管理类

  @override
  void initState() {
    super.initState();
    _dataManager = Sucrose.instance.dataManager; // 获取数据管理器实例
    // 假设有一个获取数据的方法
    _dataManager!.fetchData().then((data) {
      // 处理获取到的数据
      print('Fetched data: $data');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Sucrose Plugin Demo'),
      ),
      body: Center(
        child: Text('Check console for fetched data'),
      ),
    );
  }
}

UI组件示例

假设 sucrose 插件提供了一些自定义的UI组件:

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Sucrose Plugin Demo'),
      ),
      body: Center(
        child: SucroseButton( // 假设这是插件提供的按钮组件
          label: 'Click Me',
          onPressed: () {
            // 按钮点击事件处理
            print('SucroseButton clicked!');
          },
        ),
      ),
    );
  }
}

5. 运行应用

确保你的Flutter环境已经配置正确,然后运行应用:

flutter run

注意事项

  • 由于 sucrose 并非一个真实存在的广泛知名插件,以上代码是基于假设的API和用法。在实际使用中,你需要参考 sucrose 插件的官方文档和API。
  • 如果 sucrose 插件没有发布在 pub.dev 上,你可能需要通过本地路径或Git仓库的方式将其添加到你的项目中。
  • 确保遵循插件的最佳实践和文档中的指导,以避免潜在的问题。

希望这个示例能帮助你理解如何在Flutter项目中集成和使用一个假设的蔗糖管理或功能增强插件 sucrose。如果有具体的插件文档或API,请根据实际情况进行调整。

回到顶部