admin管理员组

文章数量:1405393

I am using this BarChart in flutter using fl_chart package here is the code

class DailyUtilizationChart extends ConsumerWidget {
  const DailyUtilizationChart({super.key});
  @override
  Widget build(context, ref) {
    final parkingId = GoRouterState.of(context).pathParameters["id"];
    
    final dailyUtilization = ref.watch(dailyUtilizationFutureProvider(parkingId));
    final metricInterval = ref.watch(metricsIntervalProvider);

    return dailyUtilization.when(
      data: (utilization) {
        final weeklyData = generateBarChartData(utilization);
        return SizedBox(
          height: 300,
          width: 500,
          child: BarChart(
            BarChartData(
              maxY: 100,
              barGroups: weeklyData,
              titlesData: FlTitlesData(
                leftTitles: const AxisTitles(
                  sideTitles: SideTitles(showTitles: true, reservedSize: 35),
                ),
                rightTitles: emptyAxisTitles,
                topTitles: emptyAxisTitles,
                bottomTitles: AxisTitles(
                  sideTitles: SideTitles(
                    showTitles: true,
                    getTitlesWidget: (value, _) {
                      if (metricInterval == MetricInterval.weekly) {
                        final date = utilization[value.toInt()].date;
                        final dayFormat = DateFormat.E();
                        return Text(dayFormat.format(date));
                      } else {
                        if (value % 2 != 0) return const SizedBox();
                        final date = utilization[value.toInt()].date;
                        final dayFormat = DateFormat('dd/MMM');
                        return Text(dayFormat.format(date));
                      }
                    },
                  ),
                ),
              ),
              borderData: FlBorderData(show: true),
              gridData: const FlGridData(show: false),
            ),
          ),
        );
      },
      error: (_, _) =>Text("Error getting utilization"),
      loading: () => const Center(child: CircularProgressIndicator()),
    );
  }
}

generateBarChartData function:

List<BarChartGroupData> generateBarChartData(List<DailyUtilizationModel> data) {
  return List.generate(data.length, (index) {
    final dayData = data[index];

    return BarChartGroupData(
      x: index,
      groupVertically: true,
      barRods: [
        BarChartRodData(toY: dayData.maxUtilization, color: AppColors.success),
        BarChartRodData(toY: dayData.avgUtilization, color: AppColors.primary),
        BarChartRodData(toY: dayData.minUtilization, color: AppColors.alert),
      ],
    );
  });
}

this chart is taking full width and ignoring the width I am providing what is the issue with this. what I have tried so far

  1. wrap with SizedBox and provide width.
  2. wrap with ConstraintBox and provide constraints. but both are ignored.

here is the snapshot

本文标签: flutterBarchart is taking full Width How to restrict BarChart width in flchartStack Overflow