From 1f0a9496ce4edebca0c358bd6e4ecb176d5c660c Mon Sep 17 00:00:00 2001 From: Sanders Date: Mon, 9 Jun 2025 10:26:55 +0300 Subject: [PATCH] fix --- finance_app/devtools_options.yaml | 4 + finance_app/lib/screens/profile_screen.dart | 1 + finance_app/pubspec.lock | 109 ++++++++++++++------ finance_app/pubspec.yaml | 33 +----- finance_app_development_plan2.csv | 25 +++++ 5 files changed, 109 insertions(+), 63 deletions(-) create mode 100644 finance_app/devtools_options.yaml create mode 100644 finance_app_development_plan2.csv diff --git a/finance_app/devtools_options.yaml b/finance_app/devtools_options.yaml new file mode 100644 index 0000000..f592d85 --- /dev/null +++ b/finance_app/devtools_options.yaml @@ -0,0 +1,4 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: + - drift: true \ No newline at end of file diff --git a/finance_app/lib/screens/profile_screen.dart b/finance_app/lib/screens/profile_screen.dart index 3d6f3a4..4447543 100644 --- a/finance_app/lib/screens/profile_screen.dart +++ b/finance_app/lib/screens/profile_screen.dart @@ -26,6 +26,7 @@ class ProfileScreen extends StatelessWidget { child: FAvatar( size: 100, backgroundColor: context.theme.colorScheme.primary.withOpacity(0.1), + image: null, child: Icon( Icons.person, size: 50, diff --git a/finance_app/pubspec.lock b/finance_app/pubspec.lock index a4534ff..c2575bb 100644 --- a/finance_app/pubspec.lock +++ b/finance_app/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: analyzer - sha256: "13c1e6c6fd460522ea840abec3f677cc226f5fec7872c04ad7b425517ccf54f7" + sha256: "904ae5bb474d32c38fb9482e2d925d5454cda04ddd0e55d2e6826bc72f6ba8c0" url: "https://pub.dev" source: hosted - version: "7.4.4" + version: "7.4.5" args: dependency: transitive description: @@ -29,10 +29,10 @@ packages: dependency: transitive description: name: async - sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.12.0" + version: "2.13.0" boolean_selector: dependency: transitive description: @@ -101,10 +101,10 @@ packages: dependency: transitive description: name: built_value - sha256: ea90e81dc4a25a043d9bee692d20ed6d1c4a1662a28c03a96417446c093ed6b4 + sha256: "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27" url: "https://pub.dev" source: hosted - version: "8.9.5" + version: "8.10.1" characters: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: checked_yaml - sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.0.4" cli_util: dependency: transitive description: @@ -189,26 +189,26 @@ packages: dependency: transitive description: name: dart_style - sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac" + sha256: "5b236382b47ee411741447c1f1e111459c941ea1b3f2b540dde54c210a3662af" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.0" drift: dependency: "direct main" description: name: drift - sha256: "14a61af39d4584faf1d73b5b35e4b758a43008cf4c0fdb0576ec8e7032c0d9a5" + sha256: b584ddeb2b74436735dd2cf746d2d021e19a9a6770f409212fd5cbc2814ada85 url: "https://pub.dev" source: hosted - version: "2.26.0" + version: "2.26.1" drift_dev: dependency: "direct dev" description: name: drift_dev - sha256: "0d3f8b33b76cf1c6a82ee34d9511c40957549c4674b8f1688609e6d6c7306588" + sha256: "54dc207c6e4662741f60e5752678df183957ab907754ffab0372a7082f6d2816" url: "https://pub.dev" source: hosted - version: "2.26.0" + version: "2.26.1" equatable: dependency: transitive description: @@ -221,10 +221,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.3.3" ffi: dependency: transitive description: @@ -270,11 +270,32 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + flutter_localizations: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + forui: + dependency: "direct main" + description: + name: forui + sha256: e77b5774aef52883d148dba1d7b6ce7a723c5e1901b13142aea1bb61b9e68d9e + url: "https://pub.dev" + source: hosted + version: "0.12.0" + forui_assets: + dependency: transitive + description: + name: forui_assets + sha256: "795b47478ddf7cafb72e943f97ae004a4aa01f1ae40f0b2d68768c35ee680da4" + url: "https://pub.dev" + source: hosted + version: "0.12.0" frontend_server_client: dependency: transitive description: @@ -291,6 +312,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.3" + google_fonts: + dependency: transitive + description: + name: google_fonts + sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 + url: "https://pub.dev" + source: hosted + version: "6.2.1" graphs: dependency: transitive description: @@ -303,10 +332,10 @@ packages: dependency: transitive description: name: http - sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f + sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" http_multi_server: dependency: transitive description: @@ -327,10 +356,10 @@ packages: dependency: "direct main" description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.19.0" + version: "0.20.2" io: dependency: transitive description: @@ -359,10 +388,10 @@ packages: dependency: transitive description: name: leak_tracker - sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.8" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: @@ -427,6 +456,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + nitrogen_types: + dependency: transitive + description: + name: nitrogen_types + sha256: "5d4ec453aea14e34607bc6021ff1381192e8fcd8541bf103638baa4d013e668f" + url: "https://pub.dev" + source: hosted + version: "0.4.0+1" package_config: dependency: transitive description: @@ -580,18 +617,18 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "310af39c40dd0bb2058538333c9d9840a2725ae0b9f77e4fd09ad6696aa8f66e" + sha256: c0503c69b44d5714e6abbf4c1f51a3c3cc42b75ce785f44404765e4635481d38 url: "https://pub.dev" source: hosted - version: "2.7.5" + version: "2.7.6" sqlite3_flutter_libs: dependency: "direct main" description: name: sqlite3_flutter_libs - sha256: "1a96b59227828d9eb1463191d684b37a27d66ee5ed7597fcf42eee6452c88a14" + sha256: "7986c26234c0a5cf4fd83ff4ee39d4195b1f47cdb50a949ec7987ede4dcbdc2a" url: "https://pub.dev" source: hosted - version: "0.5.32" + version: "0.5.33" sqlparser: dependency: transitive description: @@ -632,6 +669,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.1" + sugar: + dependency: transitive + description: + name: sugar + sha256: a0a97f1d3552a3ef4cbec7c6e62c7b52c151cd5c11e984e8311700a918f73dc5 + url: "https://pub.dev" + source: hosted + version: "4.0.0" term_glyph: dependency: transitive description: @@ -676,10 +721,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.1" + version: "15.0.0" watcher: dependency: transitive description: @@ -700,10 +745,10 @@ packages: dependency: transitive description: name: web_socket - sha256: bfe6f435f6ec49cb6c01da1e275ae4228719e59a6b067048c51e72d9d63bcc4b + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" web_socket_channel: dependency: transitive description: @@ -729,5 +774,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.7.0 <4.0.0" - flutter: ">=3.27.0" + dart: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" diff --git a/finance_app/pubspec.yaml b/finance_app/pubspec.yaml index 76e20c1..42640db 100644 --- a/finance_app/pubspec.yaml +++ b/finance_app/pubspec.yaml @@ -31,7 +31,7 @@ dependencies: flutter: sdk: flutter fl_chart: ^0.71.0 - intl: ^0.19.0 # For date formatting + intl: ^0.20.2 # For date formatting drift: ^2.18.0 # Updated Drift - основной пакет sqlite3_flutter_libs: ^0.5.24 # Needed for native platforms path_provider: ^2.1.3 # To find database file location on native @@ -40,6 +40,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 + forui: ^0.12.0 dev_dependencies: flutter_test: @@ -65,33 +66,3 @@ flutter: # the material Icons class. uses-material-design: true - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/to/resolution-aware-images - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/to/asset-from-package - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/to/font-from-package diff --git a/finance_app_development_plan2.csv b/finance_app_development_plan2.csv new file mode 100644 index 0000000..664528a --- /dev/null +++ b/finance_app_development_plan2.csv @@ -0,0 +1,25 @@ +,,, ,,, +1, , Flutter ,pubspec.yaml,, ," Flutter . pubspec.yaml : flutter, cupertino_icons, drift ( ), sqlite3_flutter_libs, path_provider, path, forui (UI ), fl_chart ( ), intl ( ). dev_dependencies: drift_dev, build_runner . SDK: '>=3.0.0 <4.0.0'." +2, , main.dart MyApp ,lib/main.dart, 1, ," lib/main.dart Flutter . : main() runApp(), StatefulWidget MyApp (/), Scaffold AppBar . MyApp database . (_isDarkMode) toggleTheme()." +3, , ,lib/theme/app_theme.dart, 2, ," lib/theme/app_theme.dart AppTheme, lightTheme darkTheme. (Colors.green). : scaffoldBackgroundColor - Colors.grey.shade50, - Color(0xFF121212). ColorScheme.fromSeed brightness . AppBar, Card, Button ." +4, , ,lib/models/category.dart lib/models/transaction_record.dart, 2, ," : 1) lib/models/category.dart Category : String name, double amount, Color colorCode, IconData iconCode. 2) lib/models/transaction_record.dart TransactionRecord : String categoryName, double amount, IconData iconCode, Color color, DateTime date, String merchant, id 1. flutter/material.dart ." +5, , ,lib/utils/category_utils.dart, 4, ," lib/utils/category_utils.dart CategoryUtils. Map _categoryDetails : 'Groceries' (Icons.shopping_cart_outlined, Colors.green.shade400), 'Subscriptions' (Icons.subscriptions_outlined, Colors.orange.shade400), 'Restaurant' (Icons.restaurant_menu_outlined, Colors.red.shade400), 'Shopping' (Icons.shopping_bag_outlined, Colors.blue.shade400), 'Transport' (Icons.directions_bus_filled_outlined, Colors.purple.shade400), 'Travel' (Icons.flight_takeoff_outlined, Colors.cyan.shade400). : getCategoryDetails(), getCategoryByName(), getAllCategoryNames()." +6, - , Drift,lib/database/database.dart, 4, ," lib/database/database.dart Drift . Transactions : id (autoIncrement), categoryName (text), amount (real), date (dateTime), merchant (text). AppDatabase extends _$AppDatabase schemaVersion = 1. : watchAllTransactions(), watchFilteredTransactions(String categoryName), addTransaction(), calculateCategoryTotals() Stream>, insertInitialDataIfNeeded() . @DriftDatabase @DataClassName." +7, - , ,lib/database/database_connection/connection.dart lib/database/database_connection/connection_native.dart lib/database/database_connection/connection_web.dart, 6, ," : 1) lib/database/database_connection/connection.dart - connect() throwing UnsupportedError. 2) connection_native.dart - , LazyDatabase path_provider db.sqlite. 3) connection_web.dart - , WebDatabase 'db'. ." +8, , ,lib/screens/expenses_screen.dart, 3, ," lib/screens/expenses_screen.dart StatefulWidget ExpensesScreen. : Function toggleTheme, bool isDarkMode, AppDatabase database. UI AppBar ( , 'My Finances', , ), Scaffold body , BottomNavigationBar (Home, Reports, Settings), FloatingActionButton . forui ." +9, , ,lib/controllers/expenses_controller.dart, 6, ," lib/controllers/expenses_controller.dart ExpensesController. : _selectedPieIndex, _isPieChartExpanded, _isFilterVisible, _selectedFilter. . : selectPieCategory(), togglePieChartVisibility(), toggleFilterVisibility(), applyFilter(), watchTransactions(), watchCategoryTotals(), addSampleTransaction() . AppDatabase ." +10, , ,lib/widgets/summary_card.dart, 8, ," lib/widgets/summary_card.dart StatelessWidget SummaryCard. double totalExpenses . FCard forui . : 'Total Expenses This Period', ( NumberFormat), FSeparator, SummaryItem Income (\$2,450.00, , ) Expenses ( , , ). context.theme.typography." +11, , ,lib/widgets/summary_item.dart, 10, ," lib/widgets/summary_item.dart StatelessWidget SummaryItem. : IconData icon, String title, String amount, Color color. Column Row , . context.theme.typography : sm mutedForeground , base bold foreground . SizedBox ." +12, - , ,lib/widgets/transactions_section.dart, 9, ," lib/widgets/transactions_section.dart StatelessWidget TransactionsSection. : Stream> transactionsStream, bool isFilterVisible, String selectedFilter, VoidCallback onToggleFilter, Function(String) onApplyFilter. Column 'Recent Transactions', (FButton.secondary), , StreamBuilder FCard. loading, error, empty. TransactionListItem ." +13, , ,lib/widgets/transaction_list_item.dart, 12, ," lib/widgets/transaction_list_item.dart StatelessWidget TransactionListItem. : TransactionRecord transaction, Animation animation. FadeTransition . InkWell Row : FAvatar , Expanded Column / ( 'Today', 'Yesterday' ), Text -\$XX.XX . CategoryUtils . onTap print ." +14, , ,lib/widgets/filter_chip_widget.dart, 12, ," lib/widgets/filter_chip_widget.dart StatelessWidget FilterChipWidget. : String label, bool isSelected, VoidCallback onTap. FButton : FButtonStyle.primary , FButtonStyle.secondary . Padding . label onTap ." +15, - , ,lib/widgets/transactions_section.dart (), 14, ," lib/widgets/transactions_section.dart . _buildFilterChips() AnimatedContainer ListView.builder FilterChipWidget. 'All' CategoryUtils.getAllCategoryNames(). _buildTransactionsList() . / duration 300ms Curves.easeInOut." +16, , / ,lib/widgets/expandable_section.dart, 8, ," lib/widgets/expandable_section.dart StatelessWidget ExpandableSection. : String title, IconData icon, bool isExpanded, VoidCallback onTap, Widget child, Animation heightFactor. FCollapsible forui initiallyExpanded = isExpanded. title Row (primary , 20) (bold, primary ). Padding fromLTRB(16, 8, 16, 0). child FCollapsible." +17, , ,lib/widgets/spending_pie_chart.dart, 16, ," lib/widgets/spending_pie_chart.dart StatelessWidget SpendingPieChart. : List categories, double totalExpenses, int selectedPieIndex, Function(int) onSelectPieCategory, Animation animation. fl_chart PieChart pieTouchData . Row Expanded (flex: 5) (flex: 4). . scale opacity. ." +18, , ,lib/screens/profile_screen.dart, 8, ," lib/screens/profile_screen.dart StatelessWidget ProfileScreen. Scaffold AppBar ( 'Profile', ), body Center Column: Hero FAvatar (tag: 'profileAvatar', 100, person), 'John Doe' (xl2 typography, bold), email 'john.doe@example.com' (base typography, mutedForeground), FButton 'Edit Profile' (primary style, onPress). SizedBox ." +19, , , , 17, ," . main.dart AppDatabase MyApp. ExpensesScreen StreamBuilder categoryTotals, streams TransactionsSection. . . . insertInitialDataIfNeeded() ." +20, , , , 19, ," . ExpensesController.addSampleTransaction() , (5-100), ( 7 ), . ExpensesScreen / showFToast. , , ." +21, , UX, , 20, ," . ExpensesScreen AnimationController pie chart forward() initState. TransactionListItem FadeTransition. SpendingPieChart AnimatedBuilder scale opacity . Hero ProfileScreen. TransactionsSection AnimatedContainer . swapAnimationDuration PieChart ." +22, , , , 21, ," . unit : CategoryUtils , ExpensesController , database . widget : SummaryCard, TransactionListItem, FilterChipWidget. integration : , , . test/widget_test.dart, test/unit_test.dart, integration_test/app_test.dart. flutter_test, mockito ." +23, , , , 22, ," . const . ListView.builder Column . StreamBuilder . memo CategoryUtils. RepaintBoundary . AnimatedBuilder. lazy loading . Flutter Inspector." +24, , UI/UX, , 23, ," . . accessibility Semantics . . . haptic feedback . error handling user feedback. loading . ."