Flutter图表绘制插件charts_fl的使用

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

Flutter图表绘制插件charts_fl的使用

特性

此Flutter包可用于显示图表和图形。
可能包括图像、GIF或视频。

开始使用

列出使用该包所需的先决条件,并提供或指向有关如何开始使用该包的信息。

使用方法

为用户提供简洁且有用的示例。将较长的示例添加到/example文件夹中。

const like = 'sample';

额外信息

告诉用户更多关于该包的信息:在哪里可以找到更多信息、如何为该包做贡献、如何提交问题、用户可以期望从包作者那里获得什么响应等。


示例代码

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:charts_fl/charts_fl.dart'; // 引入charts_fl包

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(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), // 主题颜色
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'), // 主页
    );
  }
}

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> {
  int _counter = 0; // 计数器变量

  void _incrementCounter() {
    setState(() { // 更新UI
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar( // 设置顶部导航栏
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title), // 页面标题
      ),
      body: Center( // 页面主体居中布局
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center, // 子元素垂直居中
          children: [
            const Text(
              '你已经点击了按钮多少次:', // 提示文本
            ),
            Text(
              '$_counter', // 动态计数显示
              style: Theme.of(context).textTheme.headlineMedium,
            ),
            FloatingActionButton( // 浮动按钮
              onPressed: () async {
                await CustomAlertBox.showCustomAlertBox(
                  context: context, // 上下文
                  willDisplayWidget: const Text('我的自定义弹框,来自示例!') // 自定义弹框内容
                );
              },
              tooltip: '显示自定义弹框', // 按钮提示
              child: const Icon(Icons.message), // 图标
            )
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton( // 另一个浮动按钮
        onPressed: _incrementCounter, // 点击增加计数
        tooltip: '增加计数', // 按钮提示
        child: const Icon(Icons.add), // 图标
      ),
    );
  }
}

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

1 回复

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


charts_fl 是 Flutter 中用于绘制图表的插件之一,它是基于 charts_common 库构建的,提供了丰富的图表类型和自定义选项。以下是如何在 Flutter 项目中使用 charts_fl 插件的基本步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 charts_fl 依赖:

dependencies:
  flutter:
    sdk: flutter
  charts_fl: ^0.12.0  # 请使用最新版本

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

2. 基本使用

2.1 创建一个简单的柱状图

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

class SimpleBarChart extends StatelessWidget {
  final List<charts.Series> seriesList;
  final bool animate;

  SimpleBarChart(this.seriesList, {this.animate});

  /// 创建一个柱状图
  factory SimpleBarChart.withSampleData() {
    return SimpleBarChart(
      _createSampleData(),
      animate: true,
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return charts.BarChart(
      seriesList,
      animate: animate,
    );
  }

  /// 创建一个简单的数据系列
  static List<charts.Series<OrdinalSales, String>> _createSampleData() {
    final data = [
      OrdinalSales('2014', 5),
      OrdinalSales('2015', 25),
      OrdinalSales('2016', 100),
      OrdinalSales('2017', 75),
    ];

    return [
      charts.Series<OrdinalSales, String>(
        id: 'Sales',
        colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
        domainFn: (OrdinalSales sales, _) => sales.year,
        measureFn: (OrdinalSales sales, _) => sales.sales,
        data: data,
      )
    ];
  }
}

/// 数据模型
class OrdinalSales {
  final String year;
  final int sales;

  OrdinalSales(this.year, this.sales);
}

2.2 在应用中使用图表

import 'package:flutter/material.dart';
import 'simple_bar_chart.dart'; // 导入上面的图表代码

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Charts Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Charts Demo'),
      ),
      body: Center(
        child: SimpleBarChart.withSampleData(),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!