Feat/financial position - #208
Conversation
Code Review SummaryThis PR implements the 'Financial Position' and 'Holdings' features, including database schema updates, remote data sources, repositories, and UI screens. It also enhances the AI chat experience and improves exchange rate handling by shifting the logic to the backend. 🚀 Key Improvements
💡 Minor Suggestions
🚨 Critical Issues
|
| "myGroup": "Meine gruppe", | ||
| "homeDescText": "Bist du bereit, dein Geld zu verfolgen?", | ||
| "groups": "Gruppen", | ||
| "groups": "Groups", |
There was a problem hiding this comment.
The translation is set to English. It should be translated to German.
| "groups": "Groups", | |
| + "groups": "Gruppen", |
| isScrollControlled: true, | ||
| useSafeArea: true, | ||
| constraints: BoxConstraints( | ||
| maxHeight: MediaQuery.of(context).size.height * maxHeightRatio, |
There was a problem hiding this comment.
Hardcoding the screen height ratio can cause issues on devices with unusual aspect ratios or when the keyboard is open. It is better to rely on the sheet's built-in scrollable behavior or provide a more flexible constraint.
| maxHeight: MediaQuery.of(context).size.height * maxHeightRatio, | |
| maxHeight: MediaQuery.sizeOf(context).height * maxHeightRatio, |
| final apiResponse = ApiResponse.fromJson(response.data); | ||
| final data = apiResponse.data as Map<String, dynamic>; | ||
|
|
||
| final rates = (data['rates'] as Map<String, dynamic>).map( |
There was a problem hiding this comment.
Mapping the rates and then manually adding the base key is redundant. The backend usually provides this, but if synthesizing, ensure null safety for the value conversion.
| final rates = (data['rates'] as Map<String, dynamic>).map( | |
| final rates = (data['rates'] as Map<String, dynamic>).map( | |
| (key, value) => MapEntry(key, (value as num).toDouble()), | |
| )..putIfAbsent(base, () => 1.0); |
Description
Type of Change