Skip to content

feat(mobile): new settings ui #19211

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 35 commits into
base: main
Choose a base branch
from

Conversation

dvbthien
Copy link
Contributor

@dvbthien dvbthien commented Jun 16, 2025

Description

Redesigned settings pages with a more modern and eye-catching interface.

I have attached images in the Screenshots

Screenshots (if appropriate)

Simulator Screenshot - iPhone SE (3rd generation) Simulator Screenshot - iPhone SE (3rd generation) Simulator Screenshot - iPhone SE (3rd generation) Simulator Screenshot - iPhone SE (3rd generation) Simulator Screenshot - iPhone SE (3rd generation) Simulator Screenshot - iPhone SE (3rd generation)

Checklist:

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation if applicable
  • I have no unrelated changes in the PR.
  • I have confirmed that any new dependencies are strictly necessary.
  • I have written tests for new code (if applicable)
  • I have followed naming conventions/patterns in the surrounding code

@alextran1502
Copy link
Contributor

alextran1502 commented Jun 17, 2025

Great work, I like the design a lot. There are a few things I would like to get your help with

  1. Can you keep the original translation?

  2. Make sure that the spacing is consistent

image
  1. This header looks out of place
image
  1. Use the same style headers for all segments. For example, in Photo Grid, the first segment doesn't have a title. There should be one for consistency

  2. In networking, there should be a spacing between the top segment and the app bar

  3. In the backup option, you should use the same segment style as others

@dvbthien
Copy link
Contributor Author

dvbthien commented Jun 17, 2025

Hi @alextran1502

Regarding the points you mentioned, I'll address each one:

  1. I will try to minimize changes to the original translations, but I have added some new translations for certain UI elements.

  2. I fixed that issue in my last commit.

  3. I changed the header color so it doesn't look out of place. Please see the image below—what do you think?

Screenshot 2025-06-18 at 01 57 19
  1. I think using the same header style for all segments would be challenging because each segment requires the appropriate icon and title. If you have any ideas, please share them.

  2. I fixed that issue in my last commit.

  3. I believe the current design for the backup option is good. If you want to use the same segment style, I can try changing it locally so you can better visualize it. What are your thoughts? If you like it or if you have new ideas, please let me know. I have attached images of the foreground backup with the segment style.

Screenshot 2025-06-18 at 02 15 12 Screenshot 2025-06-18 at 02 15 22


In my last commit, I changed the card's background color have more white and reduced the border width. Do you like it?

Screenshot 2025-06-18 at 02 15 22

Let me know your thoughts. Thank you!

@alextran1502
Copy link
Contributor

Hi Thien,

  1. We are using all capital letters here, so ideally, the font size should be smaller, try 13 or 14
  2. You can make them with a header with a title as "Placeholder", I can go through and come up with an appropriate one
  3. Yeah, I like the new option. I wonder if we can swap out the elevated button for a switch like other toggleable options in the settings

In my last commit, I changed the card's background color have more white and reduced the border width. Do you like it?

Looks good, when I go through the final tests, I can make small adjustments if needed

@dvbthien
Copy link
Contributor Author

Hi @alextran1502,

I have made the changes per your suggestions. I have also added a header titled "Placeholder" for all sections. Please review it when you have time.

Additionally, I have a new design for the backup page. Please see the image below.

Screenshot 2025-06-18 at 02 15 22

@dvbthien
Copy link
Contributor Author

Hi @alextran1502,

Everything has been completed for you to review in the last two commits. If you find it difficult to review, I can revert those changes and create a separate pull request.

  1. In the first commit, I split the settings into smaller widgets so that unrelated widgets are not rebuilt and the code logic is easier to understand.

  2. In the second commit, I tried a new font and found it very suitable for the application. I pushed it for you to review—if you like it, please let me know.

Have a nice day,
Thanks

@alextran1502
Copy link
Contributor

Hi @dvbthien, please keep this PR containing the new design for the settings stuff. Other refactoring should be in their PRs.

Regarding the fonts, I would like to make this change when needed. It is an important factor in the whole app's look and feel

@dvbthien
Copy link
Contributor Author

Hi @alextran1502,

I have reverted the commits. Please review them when you have a moment.

Regarding the Mulish font, I find it very similar to Overpass. I think it's beautiful, comfortable, and easy to read. You can try it out when you have time

Thanks

@@ -0,0 +1,78 @@
import 'package:flutter/material.dart';

class FadeOnTap extends StatelessWidget {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this for? I don't notice the different of the components that use this

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can long-press to notice the difference—using onTap in ListTile triggers the default splash effect. I used FadeOnTap to avoid the splash while still providing tap feedback. The default splash effect can be tricky to handle in some areas due to padding or borders.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

11.mp4
22.mp4

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we want to remove the default splash behavior?

Copy link
Contributor Author

@dvbthien dvbthien Jun 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used padding in SettingsCardLayout to align all items and set the ListTile padding to 0. With the default splash behavior, the ripple ignores that padding (as shown below) and can’t be properly clipped where there’s a border. I also chose a Container over a Card for the settings card to save on performance, since we don’t need elevation—but the container doesn’t clip the splash as cleanly as a card does.

Simulator Screenshot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants