showDailyRoutines method

Widget showDailyRoutines(
  1. dynamic key
)

Implementation

Widget showDailyRoutines(var key) {
  return FutureBuilder(
    future: getFinancialStatus(key),
    builder:
        (BuildContext context, AsyncSnapshot<Map<String, dynamic>> snapshot) {
      if (snapshot.hasData) {
        return Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            TextWidget(
              text: "Daily Expenditure",
              color: greenIntColor,
              fontSize: 17,
              fontWeight: FontWeight.w600,
              textAlign: TextAlign.start,
            ),
            Padding(
              padding: const EdgeInsets.only(top: 8.0),
              child: TextWidget(
                text:
                "This is a recommended spending for your daily spending this month ${DateTime.now().day}/${DateTime.now().month}/${DateTime.now().year}",
                color: greenIntColor,
                fontSize: 12,
                fontWeight: FontWeight.w300,
                textAlign: TextAlign.start,
              ),
            ),
            SizedBox(
              width: Get.width,
              height: 120,
              child: FutureBuilder(
                future: fillTheChat(snapshot.data!['Daily spending'],snapshot.data!['Monthly savings'],snapshot.data!['Weekly withdrawal'],snapshot.data!['Month balance']),
                builder: (BuildContext context,
                    AsyncSnapshot<RxList<ChartData>> snapshot) {
                  if (snapshot.hasData) {
                    return SfCircularChart(
                        tooltipBehavior: tooltip,
                        palette: const [
                          Color(0xffB4E0F9),
                          Color(0xffF9D3D4),
                          Color(0xffC9B9F3),
                          Color(0xff0D3224),
                          Color(0xffFFC100),
                        ],
                        legend: const Legend(
                            isVisible: true,
                            overflowMode: LegendItemOverflowMode.wrap,
                            position: LegendPosition.left,
                            itemPadding: 8),
                        series: <CircularSeries<ChartData, String>>[
                          DoughnutSeries<ChartData, String>(
                              dataSource: snapshot.data!,
                              radius: '70%',
                              legendIconType: LegendIconType.seriesType,
                              dataLabelSettings: const DataLabelSettings(
                                  isVisible: true,
                                  labelPosition:
                                  ChartDataLabelPosition.outside,
                                  connectorLineSettings:
                                  ConnectorLineSettings()),
                              innerRadius: '70%',
                              xValueMapper: (ChartData data, _) => data.x,
                              yValueMapper: (ChartData data, _) => data.y,
                              name: 'Gold')
                        ]);
                  }
                  return FutureBuilder(
                    future: getFinancialStatus(columnKey),
                    builder: (BuildContext context,
                        AsyncSnapshot<Map<String, dynamic>> snapshot) {
                      List<ChartData> d = [];
                      if (snapshot.hasData) {
                        snapshot.data!.forEach((key, value) {
                          d.addIf(
                              !d.contains(ChartData(
                                  key, double.parse(value.toString()))),
                              ChartData(
                                  key, double.parse(value.toString())));
                        });
                        return SfCircularChart(
                            tooltipBehavior: tooltip,
                            palette: const [
                              Color(0xffB4E0F9),
                              Color(0xffF9D3D4),
                              Color(0xffC9B9F3),
                            ],
                            legend: const Legend(
                                isVisible: true,
                                overflowMode: LegendItemOverflowMode.wrap,
                                position: LegendPosition.left,
                                itemPadding: 8),
                            series: <CircularSeries<ChartData, String>>[
                              DoughnutSeries<ChartData, String>(
                                  dataSource: d,
                                  radius: '70%',
                                  legendIconType: LegendIconType.seriesType,
                                  dataLabelSettings: const DataLabelSettings(
                                      isVisible: true,
                                      labelPosition:
                                      ChartDataLabelPosition.outside,
                                      connectorLineSettings:
                                      ConnectorLineSettings()),
                                  innerRadius: '70%',
                                  xValueMapper: (ChartData data, _) =>
                                  data.x,
                                  yValueMapper: (ChartData data, _) =>
                                  data.y,
                                  name: 'Gold')
                            ]);
                      }
                      return SfCircularChart(
                          tooltipBehavior: tooltip,
                          palette: const [
                            Color(0xffB4E0F9),
                            Color(0xffF9D3D4),
                            Color(0xffC9B9F3),
                          ],
                          legend: const Legend(
                              isVisible: true,
                              overflowMode: LegendItemOverflowMode.wrap,
                              position: LegendPosition.left,
                              itemPadding: 8),
                          series: <CircularSeries<ChartData, String>>[
                            DoughnutSeries<ChartData, String>(
                                dataSource: [
                                  ChartData('Income', 0),
                                  ChartData('Expenses', 0),
                                  ChartData('Savings', 0),
                                  ChartData('Remaining Amt', 0),
                                ],
                                radius: '70%',
                                legendIconType: LegendIconType.seriesType,
                                dataLabelSettings: const DataLabelSettings(
                                    isVisible: true,
                                    labelPosition:
                                    ChartDataLabelPosition.outside,
                                    connectorLineSettings:
                                    ConnectorLineSettings()),
                                innerRadius: '70%',
                                xValueMapper: (ChartData data, _) =>
                                data.x,
                                yValueMapper: (ChartData data, _) =>
                                data.y,
                                name: 'Gold')
                          ]);
                    },
                  );
                },
              ),
            ),
            Container(
              decoration: BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.circular(10)),
              child: Column(
                children: snapshot.data!.entries
                    .map((e) => e.key=="Days left"
                    ||e.key=="Can reach end of month"?Padding(
                  padding: const EdgeInsets.only(
                      left: 15.0, right: 15.0, bottom: 8),
                  child: holder(
                      e.key,
                      e.value == true
                          ? "Success"
                          : e.key == "Days left"
                          ? "${e.value}"
                          : "KES: ${format.format(e.value)}"),
                ):SizedBox())
                    .toList(),
              ),
            ),
          ],
        );
      }
      return Container(
        decoration: BoxDecoration(
            color: Colors.white, borderRadius: BorderRadius.circular(10)),
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: [
              "Can reach end of month",
              "Daily spending",
              "Days left",
              "Month balance",
              "Monthly saving",
              "Weekly withdrawal"
            ].map((e) => holder(e, "KES: -")).toList(),
          ),
        ),
      );
    },
  );
}