Skip to content

Commit

Permalink
Improve overall app UI (#158)
Browse files Browse the repository at this point in the history
* Replace all material icons with their outlined counterpart.

* Use feather icons.

* Improve padding.

Add more spacing between widgets and make it more consistent. Also improve
the separation between the bottom navigation bar and the rest of the app.

* Fix failing test.

Well, skip it. No idea why it fails and it's not really worth looking
into it right now.

* Replace all FlatButtons with TextButtons.

FlatButton was deprecated after v1.25.0-8.1.pre.

* Fix unused package warning.

* Improve settings page.

* More settings page improvements.

* Fix failing tests.

* Format files.

* Fix linter warnings.

* More icon/padding improvements.

* Improve home page.

* Improve person view.

* Improve event view.

* Improve class view.

* Increase more paddings.

* Fix tests.

* Fix formatting.

* Fix formatting again?

* Fix warning and forgotten icon.

* Bump version and prep for next release.

* Add padding at the bottom of the home page.

* Bump version again and update changelogs.
  • Loading branch information
IoanaAlexandru authored Apr 17, 2021
1 parent b472281 commit 08e4574
Show file tree
Hide file tree
Showing 56 changed files with 941 additions and 738 deletions.
8 changes: 8 additions & 0 deletions android/fastlane/metadata/android/en-GB/changelogs/10008.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Improved
- Overall app UI is now nicer⭐
- Did some internal ✨magic✨ to improve the app

Fixed
- Pressing an unknown teacher opened the teacher information sheet
- Version on settings page sometimes not showing correctly
- Bug 🐞 where pressing the edit button on a holiday would cause an error
8 changes: 8 additions & 0 deletions android/fastlane/metadata/android/en-US/changelogs/10008.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Improved
- Overall app UI is now nicer⭐
- Did some internal ✨magic✨ to improve the app

Fixed
- Pressing an unknown teacher opened the teacher information sheet
- Version on settings page sometimes not showing correctly
- Bug 🐞 where pressing the edit button on a holiday would cause an error
8 changes: 8 additions & 0 deletions android/fastlane/metadata/android/ro/changelogs/10008.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Îmbunătățit
- Interfața aplicației arată mai frumos⭐
- Puțină ✨magie✨ internă ca să îmbunătățim aplicația

Rezolvat
- Când se apăsa pe un profesor necunoscut apărea fila cu informații despre persoană (chiar dacă nu erau disponibile)
- Versiunea de pe pagina de setări nu apărea corect uneori
- Un bug 🐞 când apăsai pe butonul de editare la o vacanță și apărea o eroare
Binary file modified assets/fonts/CustomIcons/CustomIcons.ttf
Binary file not shown.
141 changes: 70 additions & 71 deletions lib/authentication/view/edit_profile_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ class _EditProfilePageState extends State<EditProfilePage> {
AppDialog _deletionConfirmationDialog(BuildContext context) {
final passwordController = TextEditingController();
return AppDialog(
icon: const Icon(Icons.warning, color: Colors.red),
icon: const Icon(Icons.warning_amber_outlined, color: Colors.red),
title: S.of(context).actionDeleteAccount,
message:
'${S.of(context).messageDeleteAccount} ${S.of(context).messageCannotBeUndone}',
Expand Down Expand Up @@ -228,14 +228,14 @@ class _EditProfilePageState extends State<EditProfilePage> {

Widget buildEditableAvatar(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8),
padding: const EdgeInsets.all(10),
child: GestureDetector(
child: CircleImage(
circleSize: 150,
image: imageWidget ??
const AssetImage('assets/illustrations/undraw_profile_pic.png'),
enableOverlay: true,
overlayIcon: const Icon(Icons.edit)),
overlayIcon: const Icon(Icons.edit_outlined)),
onTap: () async {
final Uint8List uploadedImage =
await StorageProvider.showImagePicker();
Expand Down Expand Up @@ -319,7 +319,7 @@ class _EditProfilePageState extends State<EditProfilePage> {
}
}),
AppScaffoldAction(
icon: Icons.more_vert,
icon: Icons.more_vert_outlined,
items: {
S.of(context).actionChangePassword: () =>
showDialog(context: context, builder: _changePasswordDialog),
Expand All @@ -328,82 +328,81 @@ class _EditProfilePageState extends State<EditProfilePage> {
},
)
],
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Container(
child: ListView(children: [
AccountNotVerifiedWarning(),
buildEditableAvatar(context),
PreferenceTitle(
S.of(context).labelPersonalInformation,
leftPadding: 0,
),
Form(
key: formKey,
child: Column(
children: [
TextFormField(
decoration: InputDecoration(
prefixIcon: const Icon(Icons.person),
labelText: S.of(context).labelFirstName,
hintText: S.of(context).hintFirstName,
),
controller: firstNameController,
validator: (value) {
if (value?.isEmpty ?? true) {
return S.of(context).errorMissingFirstName;
}
return null;
},
body: Container(
child: ListView(padding: const EdgeInsets.all(12), children: [
AccountNotVerifiedWarning(),
buildEditableAvatar(context),
PreferenceTitle(
S.of(context).labelPersonalInformation,
leftPadding: 0,
),
const SizedBox(height: 10),
Form(
key: formKey,
child: Column(
children: [
TextFormField(
decoration: InputDecoration(
prefixIcon: const Icon(Icons.person_outlined),
labelText: S.of(context).labelFirstName,
hintText: S.of(context).hintFirstName,
),
controller: firstNameController,
validator: (value) {
if (value?.isEmpty ?? true) {
return S.of(context).errorMissingFirstName;
}
return null;
},
),
TextFormField(
decoration: InputDecoration(
prefixIcon: const Icon(Icons.person_outlined),
labelText: S.of(context).labelLastName,
hintText: S.of(context).hintLastName,
),
controller: lastNameController,
validator: (value) {
if (value?.isEmpty ?? true) {
return S.of(context).errorMissingLastName;
}
return null;
},
),
if (isVerified == false)
TextFormField(
decoration: InputDecoration(
prefixIcon: const Icon(Icons.person),
labelText: S.of(context).labelLastName,
hintText: S.of(context).hintLastName,
prefixIcon: const Icon(Icons.alternate_email_outlined),
labelText: S.of(context).labelEmail,
hintText: S.of(context).hintEmail,
suffix: Text(emailDomain),
),
controller: lastNameController,
controller: emailController,
validator: (value) {
if (value?.isEmpty ?? true) {
return S.of(context).errorMissingLastName;
}
return null;
},
),
if (isVerified == false)
TextFormField(
decoration: InputDecoration(
prefixIcon: const Icon(Icons.alternate_email),
labelText: S.of(context).labelEmail,
hintText: S.of(context).hintEmail,
suffix: Text(emailDomain),
),
controller: emailController,
validator: (value) {
if (value?.isEmpty ?? true) {
return S.of(context).errorMissingLastName;
}
return null;
},
)
],
),
),
PreferenceTitle(
S.of(context).labelClass,
leftPadding: 0,
)
],
),
FilterDropdown(
initialPath: path,
controller: dropdownController,
leftPadding: 10,
textStyle: Theme.of(context)
.textTheme
.caption
.apply(color: Theme.of(context).hintColor),
),
]),
),
),
const SizedBox(height: 10),
PreferenceTitle(
S.of(context).labelClass,
leftPadding: 0,
),
FilterDropdown(
initialPath: path,
controller: dropdownController,
leftPadding: 10,
textStyle: Theme.of(context)
.textTheme
.caption
.apply(color: Theme.of(context).hintColor),
),
]),
),
);
}
Expand All @@ -425,13 +424,13 @@ class AccountNotVerifiedWarning extends StatelessWidget {
return Container();
}
return Padding(
padding: const EdgeInsets.only(top: 8),
padding: const EdgeInsets.only(top: 10),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
IconText(
align: TextAlign.center,
icon: Icons.error_outline,
icon: Icons.error_outlined,
text: S.of(context).messageEmailNotVerified,
actionText: S.of(context).actionSendVerificationAgain,
style: Theme.of(context)
Expand Down
2 changes: 1 addition & 1 deletion lib/authentication/view/login_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ class _LoginViewState extends State<LoginView> {
),
SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.only(left: 28, right: 28, bottom: 8),
padding: const EdgeInsets.only(left: 28, right: 28, bottom: 10),
child: IntrinsicHeight(
child: Column(
children: <Widget>[
Expand Down
6 changes: 3 additions & 3 deletions lib/authentication/view/sign_up_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ class _SignUpViewState extends State<SignUpView> {

Widget _privacyPolicy() {
return Padding(
padding: const EdgeInsets.only(top: 8),
padding: const EdgeInsets.only(top: 10),
child: Row(
children: [
Checkbox(
Expand All @@ -143,7 +143,7 @@ class _SignUpViewState extends State<SignUpView> {
.apply(fontWeightDelta: 2),
recognizer: TapGestureRecognizer()
..onTap = () => Utils.launchURL(
'https://www.websitepolicies.com/policies/view/IIUFv381',
Utils.privacyPolicyURL,
context: context)),
const TextSpan(text: '.'),
]),
Expand Down Expand Up @@ -221,7 +221,7 @@ class _SignUpViewState extends State<SignUpView> {
),
SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.only(left: 28, right: 28, bottom: 8),
padding: const EdgeInsets.only(left: 28, right: 28, bottom: 10),
child: IntrinsicHeight(
child: Column(
children: <Widget>[
Expand Down
Loading

0 comments on commit 08e4574

Please sign in to comment.