Flutter - Charts

Flutter - Charts 首页 / Flutter入门教程 / Flutter - Charts

图表是数据的图形表示,其中数据由线(line),条(bar),饼图(pie)等符号表示。在Flutter中,图表的行为与普通图表相同。无涯教程使用Flutter中的图表以图形方式表示数据,从而使用户能够以简单的方式理解它们。无涯教程还可以绘制一个图表来表示无涯教程的价值的上升和下降。

Flutter主要支持三种类型的图表,每个图表都带有多个配置选项。以下是Flutter应用程序中使用的图表:

  1. Line Chart
  2. Bar Chart
  3. Pie and Donut Chart

Line Chart

折线图是使用线连接各个数据点的图形。它以一系列数据点显示信息。它主要用于跟踪短期和长期的变化。

无涯教程可以使用它如下:

LineChart(
  LineChartData(
   //write your logic
  ),
);

Bar Chart

该图用矩形条表示分类数据。它可以是水平或垂直的。

链接:https://www.learnfk.comhttps://www.learnfk.com/flutter/flutter-charts.html

来源:LearnFk无涯教程网

无涯教程可以使用它如下:

BarChart(
  BarChartData(
   //write your logic
  ),
);

Pie or Donut Chart

它是一个以圆形图显示信息的图。在此图中,圆被划分为多个扇区,每个扇区均显示百分比或比例数据。

无涯教程可以使用它如下:

PieChart(
  PieChartData(
   //write your logic
  ),
);

让无涯教程在一个例子的帮助下了解它。

例子

打开IDE并创建新的Flutter项目。接下来,打开项目,导航到lib文件夹,然后打开pubspec.yaml文件。在此文件中,无涯教程需要添加图表依赖性。 Flutter提供了几种图表依赖性,这里无涯教程将使用fl_chart依赖性。因此,如下所示添加它:

dependencies:
  flutter:
    sdk: flutter
  fl_chart: ^0.10.1 

添加依赖项后,单击屏幕上左角显示的获取包链接。现在,打开 main.dart 文件并用以下代码替换它:

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

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

/// 这个小部件是主要的应用小部件。
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Flutter Chart Example'),
          backgroundColor: Colors.green
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            LineCharts(),
            Padding(
              padding: const EdgeInsets.all(16.0),
              child: Text(
                "Traffic Source Chart",
                  style: TextStyle(
                      fontSize: 20,
                      color: Colors.purple,
                      fontWeight: FontWeight.w700,
                      fontStyle: FontStyle.italic
                  )
              )
            ),
          ],
        ),
      ),
    );
  }
}

class LineCharts extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    const cutOffYValue = 0.0;
    const yearTextStyle =
    TextStyle(fontSize: 12, color: Colors.black);

    return SizedBox(
      width: 360,
      height: 250,
      child: LineChart(
        LineChartData(
          lineTouchData: LineTouchData(enabled: false),
          lineBarsData: [
            LineChartBarData(
              spots: [
                FlSpot(0, 1),
                FlSpot(1, 1),
                FlSpot(2, 3),
                FlSpot(3, 4),
                FlSpot(3, 5),
                FlSpot(4, 4)
              ],
              isCurved: true,
              barWidth: 2,
              colors: [
                Colors.black,
              ],
              belowBarData: BarAreaData(
                show: true,
                colors: [Colors.lightBlue.withOpacity(0.5)],
                cutOffY: cutOffYValue,
                applyCutOffY: true,
              ),
              aboveBarData: BarAreaData(
                show: true,
                colors: [Colors.lightGreen.withOpacity(0.5)],
                cutOffY: cutOffYValue,
                applyCutOffY: true,
              ),
              dotData: FlDotData(
                show: false,
              ),
            ),
          ],
          minY: 0,
          titlesData: FlTitlesData(
            bottomTitles: SideTitles(
                showTitles: true,
                reservedSize: 5,
                textStyle: yearTextStyle,
                getTitles: (value) {
                  switch (value.toInt()) {
                    case 0:
                      return '2016';
                    case 1:
                      return '2017';
                    case 2:
                      return '2018';
                    case 3:
                      return '2019';
                    case 4:
                      return '2020';
                    default:
                      return '';
                  }
                }),
            leftTitles: SideTitles(
              showTitles: true,
              getTitles: (value) {
                return '\$ ${value + 100}';
              },
            ),
          ),
          axisTitleData: FlAxisTitleData(
              leftTitle: AxisTitle(showTitle: true, titleText: 'Value', margin: 10),
              bottomTitle: AxisTitle(
                  showTitle: true,
                  margin: 10,
                  titleText: 'Year',
                  textStyle: yearTextStyle,
                  textAlign: TextAlign.right)),
          gridData: FlGridData(
            show: true,
            checkToShowHorizontalLine: (double value) {
              return value == 1 || value == 2 || value == 3 || value == 4;
            },
          ),
        ),
      ),
    );
  }
}

当无涯教程在设备或模拟器中运行应用程序时,无涯教程将获得类似于下面的屏幕截图的屏幕的UI:

Flutter Charts

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Kafka核心技术与实战 -〔胡夕〕

ZooKeeper实战与源码剖析 -〔么敬国〕

跟着高手学复盘 -〔张鹏〕

数据分析思维课 -〔郭炜〕

攻克视频技术 -〔李江〕

快手 · 移动端音视频开发实战 -〔展晓凯〕

Vue 3 企业级项目实战课 -〔杨文坚〕

零基础GPT应用入门课 -〔林健(键盘)〕

AI绘画核心技术与实战 -〔南柯〕

好记忆不如烂笔头。留下您的足迹吧 :)