readme
parent
8db659336c
commit
21c29308c2
|
@ -1,14 +1,17 @@
|
|||
# My Finance Planer
|
||||
|
||||
![Screenshot](1.png)
|
||||
My Finance Planer is a fantastic application that helps you manage your finances and provides money-saving tips. It offers an intuitive user interface and useful features to help you achieve your financial goals.
|
||||
|
||||
## Features
|
||||
|
||||
- **Financial Overview:** Display your account balances, income, and expenses in a clear and concise manner.
|
||||
![Screenshot](3.png)
|
||||
- **Budget Management:** Define budgets for different categories and keep track of your spending.
|
||||
- **Savings Tips:** Receive regular savings tips and advice to reduce your expenses.
|
||||
![Screenshot](5.png)
|
||||
- **Custom Goals:** Set personalized financial goals and track your progress.
|
||||
- **Monthly budget:** Set personalized monthly budget maximums and keep your spendings under control.
|
||||
![Screenshot](4.png)
|
||||
|
||||
## Installation
|
||||
|
||||
|
@ -21,8 +24,9 @@ My Finance Planer is a fantastic application that helps you manage your finances
|
|||
1. Upon opening the app, you will need to create one or more accounts.
|
||||
2. Click on one account card to open the account details and add transactions.
|
||||
3. Navigate through the various tabs to view your income, expense and budget check.
|
||||
4. Tap the info button in the app bar to access the saving tips.
|
||||
4. Tap the info button in the app bar to access the saving tips.,
|
||||
5. Configure your user settings and language through the settings menu.
|
||||
![Screenshot](2.png)
|
||||
6. Regularly update your expenses to stay on top of your financial situation.
|
||||
|
||||
## Contributors
|
||||
|
|
|
@ -186,6 +186,7 @@ class AccountDetailPageState extends State<AccountDetailPage>
|
|||
TabBar(
|
||||
controller: _tabController,
|
||||
labelColor: Colors.black,
|
||||
labelStyle: const TextStyle(fontSize: 14),
|
||||
unselectedLabelColor: Colors.black54,
|
||||
indicator: MaterialIndicator(
|
||||
height: 4,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"title" : "Finanzplaner",
|
||||
"title" : "My Finance Planner",
|
||||
"delete" : "Löschen",
|
||||
"deleteaccount" : "Account löschen",
|
||||
"sure" : "Sind Sie sicher, dass Sie dieses Konto löschen möchten?",
|
||||
|
@ -22,5 +22,6 @@
|
|||
"language": "Sprache",
|
||||
"currency": "Währung",
|
||||
"budget": "Budgetcheck",
|
||||
"progress": "von deinem Budget ausgegeben"
|
||||
"progress": "von deinem Budget ausgegeben",
|
||||
"monthlyexpenses": "Monatliche Ausgaben"
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"title" : "Financial Planner",
|
||||
"title" : "My Finance Planner",
|
||||
"delete" : "Delete",
|
||||
"deleteaccount" : "Delete account",
|
||||
"sure" : "Are you sure you want to delete this account?",
|
||||
|
@ -22,5 +22,6 @@
|
|||
"language": "Language",
|
||||
"currency": "Currency",
|
||||
"budget": "Budget check",
|
||||
"progress": "of your budget spent"
|
||||
"progress": "of your budget spent",
|
||||
"monthlyexpenses": "Monthly Expenses"
|
||||
}
|
|
@ -1,27 +1,54 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:syncfusion_flutter_charts/charts.dart';
|
||||
import 'expense_data.dart';
|
||||
import 'package:flutter_neumorphic/flutter_neumorphic.dart';
|
||||
|
||||
class MonthlyExpensesChart extends StatelessWidget {
|
||||
final List<ExpenseData> data;
|
||||
|
||||
const MonthlyExpensesChart({super.key, required this.data});
|
||||
const MonthlyExpensesChart({Key? key, required this.data}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SizedBox(
|
||||
height: 300,
|
||||
child: SfCartesianChart(
|
||||
primaryXAxis: CategoryAxis(),
|
||||
series: <ChartSeries>[
|
||||
ColumnSeries<ExpenseData, String>(
|
||||
dataSource: data,
|
||||
xValueMapper: (ExpenseData expense, _) => expense.month,
|
||||
yValueMapper: (ExpenseData expense, _) => expense.amount,
|
||||
color: Colors.blue,
|
||||
height: 240,
|
||||
child: Neumorphic(
|
||||
style: NeumorphicStyle(
|
||||
shape: NeumorphicShape.flat,
|
||||
depth: 8,
|
||||
intensity: 0.6,
|
||||
surfaceIntensity: 0.25,
|
||||
shadowLightColor: Colors.white,
|
||||
shadowDarkColor: Colors.black87,
|
||||
color: Colors.grey[100],
|
||||
),
|
||||
child: SfCartesianChart(
|
||||
primaryXAxis: CategoryAxis(),
|
||||
series: _buildChartSeries(),
|
||||
tooltipBehavior: TooltipBehavior(enable: true),
|
||||
title: ChartTitle(
|
||||
text: 'monthlyexpenses'.tr(),
|
||||
textStyle: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 14,
|
||||
),
|
||||
),
|
||||
],
|
||||
legend: Legend(
|
||||
isVisible: false,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
List<ChartSeries<ExpenseData, String>> _buildChartSeries() {
|
||||
return [
|
||||
ColumnSeries<ExpenseData, String>(
|
||||
dataSource: data,
|
||||
xValueMapper: (ExpenseData expense, _) => expense.month,
|
||||
yValueMapper: (ExpenseData expense, _) => expense.amount,
|
||||
color: Colors.blue.shade200,
|
||||
),
|
||||
];
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
import 'dart:convert';
|
||||
import 'package:awesome_dialog/awesome_dialog.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_neumorphic/flutter_neumorphic.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:tests/preferences.dart';
|
||||
|
@ -30,6 +31,7 @@ class FinancialPlannerApp extends StatelessWidget {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
|
||||
return MaterialApp(
|
||||
localizationsDelegates: context.localizationDelegates,
|
||||
supportedLocales: context.supportedLocales,
|
||||
|
@ -128,8 +130,9 @@ class HomePageState extends State<HomePage> {
|
|||
),
|
||||
actions: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 16.0, top: 3, bottom: 7),
|
||||
padding: const EdgeInsets.only(right: 16.0, top: 2, bottom: 0),
|
||||
child: NeumorphicButton(
|
||||
margin: EdgeInsets.only(bottom: 10),
|
||||
onPressed: () async {
|
||||
await Navigator.push(
|
||||
context,
|
||||
|
|
Loading…
Reference in New Issue