RIP-Comm / sossoldi

"Sossoldi" is a wealth management / personal finance / Net Worth tracking app, made with Flutter.
MIT License
266 stars 74 forks source link

Design: implement Transactions page #36

Closed GBergatto closed 1 year ago

GBergatto commented 1 year ago

As I said on the Discord channel, I'm working on the "Transactions" page.

I've implemented the page structure with a collapsible header and 3 tabs. I've added a placeholder ListView in each tab.

Improvements for the header:

In addition, I've edited ThemeData and defined some colors based on the design doc on Figma.

mikev-cw commented 1 year ago

Please use only english in code fragments and filenames. Also change "movements" to "transactions", just to keep consistency on how we refer to that page

FedericoBruzzone commented 1 year ago

Can we merge this PR?

GBergatto commented 1 year ago

As far as I'm concerned this PR is ready to be merged. I'll explain its contents here.

I've built the structure of the "Transactions" page and created the collapsible header used to navigate between the 3 tabs. I've added a scrollable list to each tab as a placeholder.

I've also edited the TextTheme and defined some colors as constants in constants/style.dart based on the design doc on Figma. This should address issue #40.

The main colors and font styles are included in ThemeData and should be accessed with Theme.of(context). The intended use of constants/style.dart is to be imported every time colors and styles (or other constants) not included in ThemeData are needed for a certain widget. I kept ThemeData inside main.dart instead of moving it to style.dart because I don't think it should be imported along with the constants but rather inherited via Theme.of(context).

Many elements of the app now look weird as they are inheriting from the wrong property of TextTheme. Also, most widgets have a hard-coded color that overrides the new theme, so its effect is mostly hidden.

There were still 2 undone tasks in this PR but I decided to remove them as they are more complex than originally anticipated and not crucial for this early stage. The animation of the header will need some improvements in the future, but the function is there.

Finally, I'd like to make the following two suggestions:

  1. Using relative imports for our files. See #42
  2. Breaking down pages into separate widgets. See #43