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(),
),
),
);
},
);
}