Flutter图表绘制插件chart_line的使用

Flutter图表绘制插件chart_line的使用

当前特性

  • ✅ 自定义图形
  • ✅ 动画图形

支持平台

  • Flutter Android
  • Flutter iOS
  • Flutter Web
  • Flutter 桌面

预览

安装

pubspec.yaml 文件中添加依赖:

dependencies:
  chart_line: ^0.0.3

然后导入该库:

import 'package:chart_line/chart_line.dart';

如何使用

以下是一个简单的示例,展示了如何使用 ChartLine 插件来绘制图表:

Column(
  children: [
    ChartLine(value: 5, backgroundColor: Colors.blue, label: 'One',),
    ChartLine(value: 10, backgroundColor: Colors.blue, label: 'One',),
    ChartLine(value: 55, backgroundColor: Colors.blue, label: 'One',),
    ChartLine(value: 12, backgroundColor: Colors.blue, label: 'One',),
    ChartLine(value: 15, backgroundColor: Colors.blue, label: 'One',),
  ],
);

通用示例

以下是一个更复杂的示例,展示了如何在 Scaffold 中使用 ChartLine 插件:

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: const Color(0XFF07111a),
      appBar: AppBar(
        title: Text('示例'),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: const [
          Padding(
            padding: EdgeInsets.all(8.0),
            child: ChartLine(
              value: 50,
              backgroundColor: Colors.pink,
              label: '粉红色',
            ),
          ),
          Padding(
            padding: EdgeInsets.all(8.0),
            child: ChartLine(
              value: 80,
              backgroundColor: Colors.blue,
              label: '蓝色',
            ),
          ),
          Padding(
            padding: EdgeInsets.all(8.0),
            child: ChartLine(
              value: 90,
              backgroundColor: Colors.red,
              label: '红色',
            ),
          ),
          Padding(
            padding: EdgeInsets.all(8.0),
            child: ChartLine(
              value: 100,
              backgroundColor: Colors.orange,
              label: '橙色',
            ),
          ),
        ],
      ),
    );
  }
}

GIF 示例

正常示例:

完整的示例代码如下:

import 'package:chart_line/chart_line.dart';
import 'package:flutter/material.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(title: '示例'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: const Color(0XFF07111a),
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: const [
          Padding(
            padding: EdgeInsets.all(8.0),
            child: ChartLine(
              backgroundColorLine: Colors.white,
              value: 15,
              backgroundColor: Colors.pink,
              label: '粉红色',
              textStyleLine: TextStyle(color: Colors.blue),
            ),
          ),
          Padding(
            padding: EdgeInsets.all(8.0),
            child: ChartLine(
              value: 80,
              backgroundColor: Colors.blue,
              label: '蓝色',
            ),
          ),
          Padding(
            padding: EdgeInsets.all(8.0),
            child: ChartLine(
              value: 90,
              backgroundColor: Colors.red,
              label: '红色',
            ),
          ),
          Padding(
            padding: EdgeInsets.all(8.0),
            child: ChartLine(
              value: 100,
              backgroundColor: Colors.orange,
              label: '橙色',
            ),
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter应用中使用charts_flutter(通常简称为Flutter Charts)库来绘制折线图的示例代码。请注意,charts_flutter库在pub.dev上的包名是charts_flutter,而不是chart_linechart_line可能是一个误解或者是不准确的命名。

首先,确保在你的pubspec.yaml文件中添加charts_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  charts_flutter: ^0.12.0  # 请检查最新版本号

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

接下来,你可以创建一个简单的Flutter应用来绘制折线图。以下是一个完整的示例:

import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;

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

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

class MyHomePage extends StatelessWidget {
  final List<charts.Series<MyData, int>> _seriesList;
  final bool animate;

  MyHomePage({this.animate = true})
      : _seriesList = _createSampleData() {
    // TODO: implement _createSampleData
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Line Chart Example'),
      ),
      body: Center(
        child: charts.LineChart(
          _seriesList,
          animate: animate,
          // Optional configurations
          defaultRenderer: new charts.LineRendererConfig(
            includeArea: true,
            areaOpacity: 0.25,
          ),
        ),
      ),
    );
  }

  /// Create one series with sample hardcoded data.
  static List<charts.Series<MyData, int>> _createSampleData() {
    final data = [
      MyData(0, 12),
      MyData(1, 25),
      MyData(2, 8),
      MyData(3, 17),
      MyData(4, 5),
      MyData(5, 22),
      MyData(6, 30),
      MyData(7, 21),
    ];

    return [
      charts.Series<MyData, int>(
        id: 'Sample Data',
        colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
        domainFn: (MyData data, _) => data.x,
        measureFn: (MyData data, _) => data.y,
        data: data,
      ),
    ];
  }
}

class MyData {
  final int x;
  final int y;

  MyData(this.x, this.y);
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml文件中添加了charts_flutter依赖。
  2. 创建了一个简单的Flutter应用,其中包含一个绘制折线图的页面。
  3. 定义了一个数据类MyData,它包含两个字段:xy,分别代表横坐标和纵坐标。
  4. _createSampleData方法中创建了一些示例数据,并将其封装在一个charts.Series对象中。
  5. MyHomePagebuild方法中,使用charts.LineChart小部件来渲染这些数据。

这个示例展示了如何使用charts_flutter库来绘制一个简单的折线图。你可以根据需要进一步自定义图表的样式和行为。

回到顶部