Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion lib/core/constants.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
class Constants {
import 'package:flutter/material.dart';

@immutable
final class Constants {
static const double appHPadding = 16;
static const double walletStrapWidth = 85;
static const double walletStrapHeight = 100;
Expand Down
2 changes: 1 addition & 1 deletion lib/core/data.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:wallet_app_workshop/core/styles.dart';

class CreditCardData {
final class CreditCardData {
const CreditCardData({
required this.id,
required this.name,
Expand Down
5 changes: 5 additions & 0 deletions lib/core/extensions/string_extensions.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
extension StringExtensions on String {
String get toPng => 'assets/images/$this.png';

String get toIcon => 'assets/icons/$this.png';
}
12 changes: 12 additions & 0 deletions lib/core/init/initialization.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

@immutable
final class AppInitialization {
const AppInitialization._();

static Future<void> initialization() async {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
}
}
9 changes: 5 additions & 4 deletions lib/core/styles.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';

class AppColors {
@immutable
final class AppColors {
static const Color primary = Color(0xff1A77FF);
static const Color secondary = Color(0xffFFBB05);
static const Color accent = Color(0xffF5C3D2);
Expand All @@ -13,15 +14,15 @@ class AppColors {
static const Color white = Color(0xffF2F2F2);
}

class AppBorderRadius {
final class AppBorderRadius {
static const double sm = 5;
static const double md = 10;
static const double lg = 15;
static const double xl = 20;
static const double xxl = 25;
}

class AppThemes {
final class AppThemes {
static ThemeData getTheme({bool isDark = true}) {
return ThemeData(
fontFamily: 'Raleway',
Expand Down Expand Up @@ -69,7 +70,7 @@ class AppThemes {
),
menuStyle: MenuStyle(
backgroundColor:
const MaterialStatePropertyAll<Color>(AppColors.black),
const MaterialStatePropertyAll<Color>(AppColors.black),
elevation: const MaterialStatePropertyAll<double>(0),
shape: MaterialStatePropertyAll<OutlinedBorder>(
RoundedRectangleBorder(
Expand Down
4 changes: 2 additions & 2 deletions lib/core/widgets/dashed_border_container.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'dart:math';

import 'package:flutter/material.dart';

class DashedBorderContainer extends StatelessWidget {
final class DashedBorderContainer extends StatelessWidget {
const DashedBorderContainer({
super.key,
this.width,
Expand Down Expand Up @@ -41,7 +41,7 @@ class DashedBorderContainer extends StatelessWidget {
}
}

class DashedBorderPainter extends CustomPainter {
final class DashedBorderPainter extends CustomPainter {
DashedBorderPainter({
this.dash = 5.0,
this.gap = 3.0,
Expand Down
6 changes: 3 additions & 3 deletions lib/core/widgets/wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:wallet_app_workshop/core/constants.dart';
import 'package:wallet_app_workshop/core/styles.dart';
import 'package:wallet_app_workshop/core/widgets/dashed_border_container.dart';

class Wallet extends StatelessWidget {
final class Wallet extends StatelessWidget {
const Wallet({
required this.width,
required this.height,
Expand Down Expand Up @@ -48,7 +48,7 @@ class Wallet extends StatelessWidget {
}
}

class _WalletStrapSide extends StatelessWidget {
final class _WalletStrapSide extends StatelessWidget {
const _WalletStrapSide();

@override
Expand Down Expand Up @@ -88,7 +88,7 @@ class _WalletStrapSide extends StatelessWidget {
}
}

class WalletSide extends StatelessWidget {
final class WalletSide extends StatelessWidget {
const WalletSide({super.key});

@override
Expand Down
6 changes: 3 additions & 3 deletions lib/credit-cards/credit_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'package:wallet_app_workshop/core/styles.dart';

const double creditCardAspectRatio = 1.56;

class CreditCard extends StatelessWidget {
final class CreditCard extends StatelessWidget {
const CreditCard({
required this.data,
super.key,
Expand Down Expand Up @@ -44,7 +44,7 @@ class CreditCard extends StatelessWidget {
}
}

class _CreditCardFront extends StatelessWidget {
final class _CreditCardFront extends StatelessWidget {
const _CreditCardFront(this.data);

final CreditCardData data;
Expand Down Expand Up @@ -114,7 +114,7 @@ class _CreditCardFront extends StatelessWidget {
}
}

class _CreditCardBack extends StatelessWidget {
final class _CreditCardBack extends StatelessWidget {
const _CreditCardBack(this.data);

final CreditCardData data;
Expand Down
4 changes: 2 additions & 2 deletions lib/credit-cards/credit_card_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:wallet_app_workshop/core/styles.dart';
import 'package:wallet_app_workshop/credit-cards/credit_card.dart';
import 'package:wallet_app_workshop/on-boarding/on_boarding_page.dart';

class CreditCardPage extends StatefulWidget {
final class CreditCardPage extends StatefulWidget {
const CreditCardPage({
required this.initialIndex,
required this.pageTransitionAnimation,
Expand Down Expand Up @@ -182,7 +182,7 @@ class _CreditCardPageState extends State<CreditCardPage> {
}
}

class _Button extends StatelessWidget {
final class _Button extends StatelessWidget {
const _Button({
required this.label,
required this.icon,
Expand Down
6 changes: 3 additions & 3 deletions lib/credit-cards/credit_cards_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const maxCardScale = 1.0;
const cardsOffset = 12.0;
const minThrowDistance = 300.0;

class CreditCardsPage extends StatefulWidget {
final class CreditCardsPage extends StatefulWidget {
const CreditCardsPage({
super.key,
this.onCardPagePush,
Expand Down Expand Up @@ -132,7 +132,7 @@ class _CreditCardsPageState extends State<CreditCardsPage> {
}
}

class CreditCardsStack extends StatefulWidget {
final class CreditCardsStack extends StatefulWidget {
const CreditCardsStack({
required this.itemCount,
required this.itemBuilder,
Expand All @@ -150,7 +150,7 @@ class CreditCardsStack extends StatefulWidget {
State<CreditCardsStack> createState() => _CreditCardsStackState();
}

class _CreditCardsStackState extends State<CreditCardsStack>
final class _CreditCardsStackState extends State<CreditCardsStack>
with SingleTickerProviderStateMixin {
late final AnimationController animationController;
late final Animation<double> curvedAnimation;
Expand Down
15 changes: 8 additions & 7 deletions lib/home_page.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import 'package:flutter/material.dart';
import 'package:wallet_app_workshop/core/constants.dart';
import 'package:wallet_app_workshop/core/data.dart';
import 'package:wallet_app_workshop/core/extensions/string_extensions.dart';
import 'package:wallet_app_workshop/core/styles.dart';
import 'package:wallet_app_workshop/core/widgets/wallet.dart';
import 'package:wallet_app_workshop/credit-cards/credit_cards_page.dart';
import 'package:wallet_app_workshop/payment/payment_bottom_sheet.dart';

class HomePage extends StatefulWidget {
final class HomePage extends StatefulWidget {
const HomePage({super.key});

@override
Expand Down Expand Up @@ -61,12 +62,12 @@ class _HomePageState extends State<HomePage> {
destinations: <Widget>[
NavigationDestination(
selectedIcon: Image.asset(
'assets/icons/cards-active.png',
'cards-active'.toIcon,
width: 35,
height: 35,
),
icon: Image.asset(
'assets/icons/cards.png',
'cards'.toIcon,
width: 35,
height: 35,
),
Expand Down Expand Up @@ -103,12 +104,12 @@ class _HomePageState extends State<HomePage> {
),
NavigationDestination(
selectedIcon: Image.asset(
'assets/icons/notifications-active.png',
'notifications-active'.toIcon,
width: 30,
height: 30,
),
icon: Image.asset(
'assets/icons/notifications.png',
'notifications'.toIcon,
width: 30,
height: 30,
),
Expand All @@ -123,7 +124,7 @@ class _HomePageState extends State<HomePage> {
}
}

class _NotificationsPage extends StatelessWidget {
final class _NotificationsPage extends StatelessWidget {
const _NotificationsPage();

@override
Expand All @@ -134,7 +135,7 @@ class _NotificationsPage extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
children: [
Center(
child: Image.asset('assets/images/empty.png'),
child: Image.asset('empty'.toPng),
),
const SizedBox(height: 20),
const Center(
Expand Down
9 changes: 4 additions & 5 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:wallet_app_workshop/core/init/initialization.dart';
import 'package:wallet_app_workshop/core/styles.dart';
import 'package:wallet_app_workshop/on-boarding/on_boarding_page.dart';

void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
Future<void> main() async {
await AppInitialization.initialization();
runApp(const WalletApp());
}

class WalletApp extends StatelessWidget {
final class WalletApp extends StatelessWidget {
const WalletApp({super.key});

@override
Expand Down
2 changes: 1 addition & 1 deletion lib/on-boarding/on_boarding_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:wallet_app_workshop/core/styles.dart';
import 'package:wallet_app_workshop/core/widgets/wallet.dart';
import 'package:wallet_app_workshop/home_page.dart';

class OnBoardingPage extends StatefulWidget {
final class OnBoardingPage extends StatefulWidget {
const OnBoardingPage({super.key});

@override
Expand Down
2 changes: 1 addition & 1 deletion lib/payment/payment_bottom_sheet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:wallet_app_workshop/core/data.dart';
import 'package:wallet_app_workshop/payment/payment_button.dart';

class PaymentBottomSheet extends StatefulWidget {
final class PaymentBottomSheet extends StatefulWidget {
const PaymentBottomSheet({super.key});

@override
Expand Down
5 changes: 3 additions & 2 deletions lib/payment/payment_button.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import 'dart:math';

import 'package:flutter/material.dart';
import 'package:wallet_app_workshop/core/extensions/string_extensions.dart';
import 'package:wallet_app_workshop/core/styles.dart';

const dragSnapDuration = Duration(milliseconds: 300);
const draggableMinWidth = 60.0;

class PaymentButton extends StatefulWidget {
final class PaymentButton extends StatefulWidget {
const PaymentButton({
super.key,
this.enabled = false,
Expand Down Expand Up @@ -198,7 +199,7 @@ class _PaymentButtonState extends State<PaymentButton>
width: 60,
child: Center(
child: Image.asset(
'assets/icons/dollar.png',
'dollar'.toIcon,
width: 30,
),
),
Expand Down