Flutter自适应卡片渲染插件adaptive_card_renderer的使用

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

Flutter自适应卡片渲染插件adaptive_card_renderer的使用

adaptive_card_renderer 是一个Flutter插件,它使你能够在Flutter应用程序中直接渲染Adaptive Cards。Adaptive Cards是一种以跨平台且人类可读的格式交换UI内容的方式。

该插件支持在Android和iOS上渲染Adaptive Cards,并利用平台特定视图来实现优化和原生体验。

特性

  • 动态Adaptive Card渲染:传递JSON数据以渲染交互式卡片。
  • 跨平台支持:在Android和iOS上无缝工作。
  • 可定制输入:接受用户直接输入的JSON来实时渲染卡片。

开始使用

安装

在你的pubspec.yaml文件中添加以下依赖:

dependencies:
  adaptive_card_renderer: ^0.0.1

Android配置

styles.xml文件中添加以下配置:

<style name="LaunchTheme" parent="@style/Theme.MaterialComponents.DayNight">
    <!-- Your theme configurations -->
</style>

示例用法

下面是一个简单的示例,展示如何使用adaptive_card_renderer插件来渲染一个静态的Adaptive Card。

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Adaptive Card Renderer')),
        body: Center(
          child: AdaptiveCardView(
            jsonText: '''
{
  "type": "AdaptiveCard",
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.6",
  "body": [
    {
      "type": "TextBlock",
      "text": "Hello Adaptive Cards!",
      "size": "Medium",
      "weight": "Bolder"
    }
  ]
}
            ''',
          ),
        ),
      ),
    );
  }
}

动态JSON输入示例

下面是一个更复杂的示例,展示如何动态输入JSON并渲染Adaptive Card。

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

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AdaptiveCardScreen(),
    );
  }
}

class AdaptiveCardScreen extends StatefulWidget {
  [@override](/user/override)
  _AdaptiveCardScreenState createState() => _AdaptiveCardScreenState();
}

class _AdaptiveCardScreenState extends State<AdaptiveCardScreen> {
  final TextEditingController _controller = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Dynamic Adaptive Card')),
      body: Column(
        children: [
          TextField(
            controller: _controller,
            maxLines: 10,
            decoration: const InputDecoration(
              labelText: 'Enter Adaptive Card JSON',
              border: OutlineInputBorder(),
            ),
          ),
          ElevatedButton(
            onPressed: () {
              setState(() {});
            },
            child: const Text('Render Card'),
          ),
          if (_controller.text.isNotEmpty)
            Expanded(
              child: AdaptiveCardView(
                jsonText: _controller.text,
              ),
            ),
        ],
      ),
    );
  }
}

更多关于Flutter自适应卡片渲染插件adaptive_card_renderer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自适应卡片渲染插件adaptive_card_renderer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter应用中使用adaptive_card_renderer插件来渲染自适应卡片的示例代码。这个插件允许你根据JSON格式的卡片模板动态渲染UI组件。

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

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

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

接下来,在你的Flutter应用中,你可以按照以下步骤使用adaptive_card_renderer

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:adaptive_card_renderer/adaptive_card_renderer.dart';
import 'dart:convert';
  1. 定义一个卡片JSON模板
final String cardJson = '''
{
  "type": "AdaptiveCard",
  "version": "1.0",
  "body": [
    {
      "type": "TextBlock",
      "text": "Hello, World!",
      "weight": "Bolder",
      "size": "Large"
    },
    {
      "type": "TextBlock",
      "text": "This is an adaptive card.",
      "isSubtle": true
    },
    {
      "type": "Image",
      "url": "https://via.placeholder.com/150",
      "size": "Medium"
    }
  ]
}
''';
  1. 在Widget中渲染卡片
void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Adaptive Card Renderer Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Adaptive Card Renderer Demo'),
        ),
        body: Center(
          child: AdaptiveCardWidget.fromJson(jsonDecode(cardJson)),
        ),
      ),
    );
  }
}

在上面的代码中,AdaptiveCardWidget.fromJson方法接受一个解析后的JSON对象(通过jsonDecode方法从字符串转换而来),并渲染出相应的自适应卡片。

  1. 运行应用

确保你的开发环境已经配置好,然后运行Flutter应用。你应该会看到一个包含文本块和图片的简单自适应卡片。

这个示例展示了如何使用adaptive_card_renderer插件来渲染一个基本的自适应卡片。你可以根据需要扩展JSON模板,添加更多的元素和属性来实现更复杂的设计。插件的文档和源代码通常会提供更多关于可用元素和属性的详细信息。

回到顶部