Flutter圆形图表绘制插件flutter_circle_chart的使用

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

Flutter圆形图表绘制插件flutter_circle_chart的使用

flutter_circle_chart 是一个用于在Flutter应用中创建圆形图表的插件。它支持多种绘图类型,非常适合用于展示数据统计等场景。

示例

下面是一个完整的示例代码,展示了如何使用flutter_circle_chart插件来创建不同类型的圆形图表。

完整示例代码

import 'dart:math';
import 'dart:math' as math;

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        backgroundColor: Color(0xff4C2882),
        appBar: AppBar(
          title: Text('Flutter Circle Chart'),
        ),
        body: SingleChildScrollView(
          child: Column(
            children: List.generate(
              CircleChartType.values.length,
              (index) => Padding(
                padding: const EdgeInsets.all(8.0),
                child: Column(
                  children: [
                    Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Text(
                        '${CircleChartType.values[index]}',
                        style: TextStyle(
                          fontSize: 16,
                          color: Colors.white,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                    ),
                    CircleChart(
                      chartType: CircleChartType.values[index],
                      items: List.generate(
                        3,
                        (index) => CircleChartItemData(
                          color: randomColor(),
                          value: 100 + Random.secure().nextDouble() * 1000,
                          name: 'Lorem Ipsum $index',
                          description:
                              'Lorem Ipsum $index không phải chỉ là một đoạn văn bản ngẫu nhiên.',
                        ),
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

Color randomColor() {
  var g = math.Random.secure().nextInt(255);
  var b = math.Random.secure().nextInt(255);
  var r = math.Random.secure().nextInt(255);
  return Color.fromARGB(255, r, g, b);
}

解释

  1. 导入依赖

    • dart:mathdart:math as math:用于生成随机颜色和数值。
    • package:flutter/material.dart:Flutter的基本UI库。
    • package:flutter_circle_chart/flutter_circle_chart.dart:圆形图表插件。
  2. 主函数

    • main() 函数是应用程序的入口点,调用了 runApp(MyApp()) 来启动应用。
  3. MyApp类

    • 继承自 StatefulWidget,表示这是一个有状态的组件。
    • _MyAppState 类实现了 State<MyApp> 接口,管理应用的状态。
  4. 构建方法

    • 使用 MaterialApp 包装了整个应用,并设置了主题色为蓝色。
    • Scaffold 提供了基本的页面结构,包括导航栏和主体内容。
    • SingleChildScrollView 包含了一个 Column,其中包含多个圆形图表实例,每个实例对应不同的 CircleChartType
  5. 圆形图表配置

    • CircleChart 小部件接受 chartType 参数来指定图表类型。
    • items 参数是一个列表,包含了多个 CircleChartItemData 对象,每个对象定义了图表项的颜色、值、名称和描述。
  6. 随机颜色生成器

    • randomColor() 函数生成随机颜色,用于图表项的颜色设置。

通过这个示例,你可以轻松地在自己的Flutter项目中集成并使用flutter_circle_chart插件来创建各种类型的圆形图表。


更多关于Flutter圆形图表绘制插件flutter_circle_chart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter圆形图表绘制插件flutter_circle_chart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter中使用flutter_circle_chart插件绘制圆形图表的示例代码。

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

dependencies:
  flutter:
    sdk: flutter
  flutter_circle_chart: ^0.2.0  # 请根据需要替换为最新版本号

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

接下来是一个完整的示例代码,展示如何使用flutter_circle_chart绘制一个简单的圆形图表:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Circle Chart Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: CircleChartExample(),
    );
  }
}

class CircleChartExample extends StatelessWidget {
  final List<double> data = [30, 50, 20]; // 数据列表,总和应为100
  final List<String> labels = ['A', 'B', 'C']; // 每个数据对应的标签

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Circle Chart Example'),
      ),
      body: Center(
        child: CircleChart(
          data: data,
          labels: labels,
          animationDuration: Duration(seconds: 2), // 动画持续时间
          backgroundWidth: 40, // 背景圆环宽度
          foregroundWidth: 25, // 前景圆环宽度
          labelStyle: TextStyle(fontSize: 16, color: Colors.black), // 标签样式
          backgroundColor: Colors.grey[200]!, // 背景圆环颜色
          foregroundColors: [Colors.blue, Colors.green, Colors.red], // 前景圆环颜色列表
          percentages: true, // 是否显示百分比
          center: Text(
            '100%',
            style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
          ), // 中心文本
        ),
      ),
    );
  }
}

在这个示例中:

  1. data 列表包含了绘制圆形图表所需的数据,这些数据加起来应该等于100(表示一个完整的圆)。
  2. labels 列表包含了每个数据对应的标签。
  3. CircleChart 组件接收这些数据并绘制圆形图表。
  4. 你可以自定义动画持续时间、圆环宽度、颜色、标签样式等属性。

运行这段代码后,你应该会看到一个带有动画效果的圆形图表,每个部分用不同的颜色表示,并在中心显示“100%”,同时在每个部分上显示对应的百分比。

希望这个示例代码对你有所帮助!

回到顶部