有没有办法根据值更改列的 colored颜色 ?

最高/最低列需要有不同的 colored颜色 ,以将其与其他值区分开来.

  • 我正在使用syncfusion-charts包中的BarSeries创建图表

  • 我的数据是灵活的变化取决于用户不能硬编码列 colored颜色

推荐答案

要 for each 条形图定制不同 colored颜色 的条形图,需要实现BarSeries.onCreateRenderer.请看下面的示例:

Screenshot

以下是该应用程序的minimal-reproducible-example个:

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
      debugShowCheckedModeBanner: false,
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return const Scaffold(
      body: BarHorizontal(),
    );
  }
}

/// Renders customized Column chart
class BarHorizontal extends StatefulWidget {
  /// Creates customized Column chart
  const BarHorizontal({Key? key}) : super(key: key);

  @override
  State<BarHorizontal> createState() => _BarHorizontalState();
}

class _BarHorizontalState extends State<BarHorizontal> {
  _BarHorizontalState();

  @override
  Widget build(BuildContext context) {
    return SfCartesianChart(
      title: ChartTitle(text: 'PC vendor shipments - 2015 Q1'),
      primaryXAxis: CategoryAxis(
        majorGridLines: const MajorGridLines(width: 0),
      ),
      primaryYAxis: NumericAxis(
          labelFormat: '{value}M',
          title: AxisTitle(text: 'Shipments in million'),
          majorGridLines: const MajorGridLines(width: 0),
          majorTickLines: const MajorTickLines(size: 0)),
      series: <ChartSeries<ChartSampleData, String>>[
        BarSeries<ChartSampleData, String>(
          onCreateRenderer: (ChartSeries<ChartSampleData, String> series) =>
              _CustomColumnSeriesRenderer(),
          dataLabelSettings: const DataLabelSettings(
              isVisible: true, labelAlignment: ChartDataLabelAlignment.middle),
          dataSource: <ChartSampleData>[
            ChartSampleData(x: 'HP Inc', y: 12.54),
            ChartSampleData(x: 'Lenovo', y: 13.46),
            ChartSampleData(x: 'Dell', y: 9.18),
            ChartSampleData(x: 'Apple', y: 4.56),
            ChartSampleData(x: 'Asus', y: 5.29),
          ],
          width: 0.8,
          xValueMapper: (ChartSampleData sales, _) => sales.x as String,
          yValueMapper: (ChartSampleData sales, _) => sales.y,
        )
      ],
    );
  }
}

class _CustomColumnSeriesRenderer extends BarSeriesRenderer {
  _CustomColumnSeriesRenderer();

  @override
  BarSegment createSegment() {
    return _ColumnCustomPainter();
  }
}

class _ColumnCustomPainter extends BarSegment {
  final colorList = [
    const Color.fromRGBO(53, 92, 125, 1),
    const Color.fromRGBO(192, 108, 132, 1),
    const Color.fromRGBO(246, 114, 128, 1),
    const Color.fromRGBO(248, 177, 149, 1),
    const Color.fromRGBO(116, 180, 155, 1)
  ];

  @override
  Paint getFillPaint() {
    final Paint customerFillPaint = Paint();
    customerFillPaint.isAntiAlias = false;
    customerFillPaint.color = colorList[currentSegmentIndex!];
    customerFillPaint.style = PaintingStyle.fill;
    return customerFillPaint;
  }
}

class ChartSampleData {
  ChartSampleData({this.x, this.y});

  final dynamic x;
  final num? y;
}

Flutter相关问答推荐

在Flutter中,CachedNetworks Image不工作(不从CachedData加载)

如何创建一个按钮来在Ffltter Webview中转到上一页?

框中的Flutter 适配图像

如何将请求字段正确添加到DART多部分请求

带有命名参数的回调函数不起作用

要禁用按钮上的通知声音,请点击Flutter

hooks_riverpod 有用途吗

获取通过列表呈现的相同 TextEditingController 的值

Firebase Auth - 有没有办法为新用户预先生成 UID?

无法使用 bloc 更新 ListView.builder 的特定时间

如何删除图像边框半径与其父容器边框半径之间的空白

Flutter Websockets MacOS:相同的代码在调试模式下有效,但在发布模式下无效:(操作系统错误:提供了 node 名或服务名..)

Flutter:如何判断嵌套列表是否包含值

如何制作两个显示相关内容且可编辑的文本字段?

如何在椭圆形图像周围添加边框?Flutter

如何判断 text.contains() 是否包含多个值

无法列出 com.facebook.android:facebook-login -Facebook 登录问题的版本

更新未知文档 ID firebase\flutter 中的字段

Flutter 小部件中的视图和逻辑分离

FLUTTER+SQL:在 ListViewBuilder 中显示数据库中的数据