From 0e106e65a562742aca0c2a62a2c012ab2f3125d5 Mon Sep 17 00:00:00 2001 From: Moutia Benachour Date: Sun, 11 Sep 2022 15:37:28 +0100 Subject: [PATCH] update dart code --- lib/injection/dependency_injection.dart | 2 +- lib/models/expenses.dart | 6 +- lib/models/healthSteam.dart | 10 +- lib/models/transaction.dart | 9 +- lib/models/user.dart | 8 +- lib/models/wallet.dart | 28 ++++-- lib/providers/auth_provider.dart | 2 +- lib/providers/transaction_provider.dart | 24 ++--- lib/providers/user_provider.dart | 2 +- lib/providers/wallet_provider.dart | 2 +- lib/screens/dashboard/dashboard.dart | 2 +- .../local_widgets/bottom_navigation.dart | 4 +- lib/screens/history/history.dart | 27 +++--- .../local_widgets/transaction_list_tile.dart | 4 +- lib/screens/home/home.dart | 8 +- .../home/local_widgets/expenses_chart.dart | 95 +++++++------------ .../financial_health_stream.dart | 2 +- lib/screens/login.dart | 1 + lib/screens/register/register_step_1.dart | 2 + lib/utils/constants.dart | 2 +- lib/utils/size_config.dart | 60 ++++++------ lib/widgets/drawer.dart | 3 +- 22 files changed, 151 insertions(+), 152 deletions(-) diff --git a/lib/injection/dependency_injection.dart b/lib/injection/dependency_injection.dart index 344cd4b..ab29544 100644 --- a/lib/injection/dependency_injection.dart +++ b/lib/injection/dependency_injection.dart @@ -1,7 +1,7 @@ enum Flavor { MOCK, PRO } class Injector { - static Flavor _flavor; + static late Flavor _flavor; static void configure(Flavor flavor) { _flavor = flavor; diff --git a/lib/models/expenses.dart b/lib/models/expenses.dart index b30f3c3..dab2d01 100644 --- a/lib/models/expenses.dart +++ b/lib/models/expenses.dart @@ -3,8 +3,8 @@ class Expenses { String amount; String percentage; Expenses({ - this.type, - this.amount, - this.percentage, + required this.type, + required this.amount, + required this.percentage, }); } diff --git a/lib/models/healthSteam.dart b/lib/models/healthSteam.dart index 373d02a..e660931 100644 --- a/lib/models/healthSteam.dart +++ b/lib/models/healthSteam.dart @@ -6,11 +6,11 @@ class HealthSteam { String oneGramGoldPriceInLira; HealthSteam({ - this.type, - this.valueInPercentage, - this.goldInGram, - this.goldPriceInTurkishLira, - this.oneGramGoldPriceInLira, + required this.type, + required this.valueInPercentage, + required this.goldInGram, + required this.goldPriceInTurkishLira, + required this.oneGramGoldPriceInLira, }); HealthSteam.fromJson(Map map) diff --git a/lib/models/transaction.dart b/lib/models/transaction.dart index 1cef5d3..7afa0d1 100644 --- a/lib/models/transaction.dart +++ b/lib/models/transaction.dart @@ -1,7 +1,8 @@ class Category { String name; String color; - Category({this.name, this.color}); + + Category({required this.name, required this.color}); Category.formJson(Map map) : name = map["name"], @@ -16,7 +17,11 @@ class Transaction { Category category; Transaction( - {this.amount, this.description, this.date, this.name, this.category}); + {required this.amount, + required this.description, + required this.date, + required this.name, + required this.category}); Transaction.fromJson(Map map) : category = Category.formJson(map["category"]), diff --git a/lib/models/user.dart b/lib/models/user.dart index 525ac73..2806bd7 100644 --- a/lib/models/user.dart +++ b/lib/models/user.dart @@ -4,5 +4,11 @@ class User { String email; String token; - User({this.userId, this.name, this.email, this.token}); + static final User noUser = User(userId: 0, name: '', email: '', token: ''); + + User( + {required this.userId, + required this.name, + required this.email, + required this.token}); } diff --git a/lib/models/wallet.dart b/lib/models/wallet.dart index 51eed9f..9a0c69a 100644 --- a/lib/models/wallet.dart +++ b/lib/models/wallet.dart @@ -11,14 +11,16 @@ class Wallet { List healthStreams; List expensesChart; + static final Wallet emptyWallet = Wallet._empty(); + Wallet({ - this.totalAssets, - this.totalTurkishLiraPool, - this.totalGoldInGram, - this.totalGoldInTurkishLira, - this.healthSteamDay, - this.healthStreams, - this.expensesChart, + required this.totalAssets, + required this.totalTurkishLiraPool, + required this.totalGoldInGram, + required this.totalGoldInTurkishLira, + required this.healthSteamDay, + required this.healthStreams, + required this.expensesChart, }); Wallet.fromMap(Map map) @@ -29,5 +31,15 @@ class Wallet { healthSteamDay = map["health_stream_day"], healthStreams = (map["health_stream"] as List) .map((i) => HealthSteam.fromJson(i)) - .toList(); + .toList(), + expensesChart = []; + + Wallet._empty(): + totalAssets = '', + totalTurkishLiraPool = '', + totalGoldInGram = '', + totalGoldInTurkishLira = '', + healthSteamDay = '', + healthStreams = [], + expensesChart = []; } diff --git a/lib/providers/auth_provider.dart b/lib/providers/auth_provider.dart index e54906d..f7d2ccd 100644 --- a/lib/providers/auth_provider.dart +++ b/lib/providers/auth_provider.dart @@ -18,7 +18,7 @@ class AuthProvider with ChangeNotifier { Status get loggedInStatus => _loggedInStatus; Status get registeredInStatus => _registeredInStatus; - Future> login(String email, int pinCode) async { + Future login(String email, int pinCode) async { var result; final Map loginData = { diff --git a/lib/providers/transaction_provider.dart b/lib/providers/transaction_provider.dart index cdc9e94..9349877 100644 --- a/lib/providers/transaction_provider.dart +++ b/lib/providers/transaction_provider.dart @@ -3,32 +3,28 @@ import 'package:robo_advisory/models/transaction.dart'; import 'package:robo_advisory/repository/transaction.repository.dart'; class TransactionProvider with ChangeNotifier { - String _selectedCategory = "All"; - List _transactionsData; - List _transactionsList; + String? _selectedCategory; + List _transactionsData = []; List get transactionList { - if (_selectedCategory != 'All') { - return _transactionsList = _transactionsData - .where((transaction) => - transaction.category.name == _selectedCategory.toLowerCase()) - .toList(); - } else { - return _transactionsList = _transactionsData; + if (_selectedCategory == null) { + return _transactionsData; } + return _transactionsData + .where((transaction) => + transaction.category.name == _selectedCategory?.toLowerCase()) + .toList(); } void setTransactionsList(List transactions) { _transactionsData = transactions; - _transactionsList = transactions; notifyListeners(); } - String get selectedCategory => _selectedCategory; + String? get selectedCategory => _selectedCategory; - void setSelectedCategory(String category) { + void setSelectedCategory(String? category) { _selectedCategory = category; - print(_selectedCategory); notifyListeners(); } diff --git a/lib/providers/user_provider.dart b/lib/providers/user_provider.dart index dff068a..45d8daf 100644 --- a/lib/providers/user_provider.dart +++ b/lib/providers/user_provider.dart @@ -2,7 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:robo_advisory/models/user.dart'; class UserProvider with ChangeNotifier { - User _user = new User(); + User _user = User.noUser; int _selectedTabIndex = 0; List _categories = ["All", "Workplace", "Equipment", "Home", "Other"]; diff --git a/lib/providers/wallet_provider.dart b/lib/providers/wallet_provider.dart index 8320eab..4eea9d4 100644 --- a/lib/providers/wallet_provider.dart +++ b/lib/providers/wallet_provider.dart @@ -3,7 +3,7 @@ import 'package:robo_advisory/models/wallet.dart'; import 'package:robo_advisory/repository/wallet.repository.dart'; class WalletProvider with ChangeNotifier { - Wallet _wallet = new Wallet(); + Wallet _wallet = Wallet.emptyWallet; Wallet get wallet => _wallet; diff --git a/lib/screens/dashboard/dashboard.dart b/lib/screens/dashboard/dashboard.dart index 404955a..7cbde88 100644 --- a/lib/screens/dashboard/dashboard.dart +++ b/lib/screens/dashboard/dashboard.dart @@ -17,7 +17,7 @@ class _DashboardScreenState extends State { final GlobalKey _scaffoldKey = GlobalKey(); void _openEndDrawer() { - _scaffoldKey.currentState.openEndDrawer(); + _scaffoldKey.currentState?.openEndDrawer(); } @override diff --git a/lib/screens/dashboard/local_widgets/bottom_navigation.dart b/lib/screens/dashboard/local_widgets/bottom_navigation.dart index c2b60c1..99f2fba 100644 --- a/lib/screens/dashboard/local_widgets/bottom_navigation.dart +++ b/lib/screens/dashboard/local_widgets/bottom_navigation.dart @@ -3,7 +3,7 @@ import 'package:robo_advisory/theme/icons.dart'; import 'package:flutter_svg/flutter_svg.dart'; class BottomNavigation extends StatelessWidget { - BottomNavigation({@required this.selectedIndex, @required this.onItemTapped}); + BottomNavigation({required this.selectedIndex, required this.onItemTapped}); final int selectedIndex; final Function onItemTapped; @override @@ -48,7 +48,7 @@ class BottomNavigation extends StatelessWidget { showSelectedLabels: false, showUnselectedLabels: false, currentIndex: selectedIndex, - onTap: onItemTapped, + onTap: (v) => onItemTapped(v), ); } } diff --git a/lib/screens/history/history.dart b/lib/screens/history/history.dart index e62ba63..b09ebcb 100644 --- a/lib/screens/history/history.dart +++ b/lib/screens/history/history.dart @@ -17,24 +17,20 @@ class HistoryScreen extends StatefulWidget { class _HistoryScreenState extends State { bool loadingData = true; - List transactionData; + List transactionData = []; void initState() { TransactionProvider transactionProvider = Provider.of(context, listen: false); transactionProvider.loadTransactions().then((value) { - if (value != null) { - Timer(Duration(seconds: 3), () { - setState(() { - loadingData = false; - transactionData = value; - Provider.of(context, listen: false) - .setTransactionsList(transactionData); - }); + Timer(Duration(seconds: 3), () { + setState(() { + loadingData = false; + transactionData = value; + Provider.of(context, listen: false) + .setTransactionsList(transactionData); }); - } - - print(value); + }); }); super.initState(); } @@ -71,9 +67,10 @@ class _HistoryScreenState extends State { }).toList(), hint: new Text("Select Category"), value: Provider.of(context, - listen: true) - .selectedCategory, - onChanged: (String newValue) { + listen: true) + .selectedCategory ?? + 'All', + onChanged: (String? newValue) { Provider.of(context, listen: false) .setSelectedCategory(newValue); diff --git a/lib/screens/history/local_widgets/transaction_list_tile.dart b/lib/screens/history/local_widgets/transaction_list_tile.dart index 882189f..f58eb5d 100644 --- a/lib/screens/history/local_widgets/transaction_list_tile.dart +++ b/lib/screens/history/local_widgets/transaction_list_tile.dart @@ -4,7 +4,9 @@ import 'package:robo_advisory/utils/helpers.dart'; class TransactionListTile extends StatelessWidget { final Transaction transactionObject; - TransactionListTile({this.transactionObject}); + + TransactionListTile({required this.transactionObject}); + @override Widget build(BuildContext context) { return Column( diff --git a/lib/screens/home/home.dart b/lib/screens/home/home.dart index 14170fd..2721591 100644 --- a/lib/screens/home/home.dart +++ b/lib/screens/home/home.dart @@ -12,7 +12,7 @@ import 'package:robo_advisory/screens/home/local_widgets/expenses_chart.dart'; import 'dart:async'; class HomeScreen extends StatefulWidget { - HomeScreen({@required this.toggleDrawer}); + HomeScreen({required this.toggleDrawer}); final Function toggleDrawer; @override _HomeScreenState createState() => _HomeScreenState(); @@ -20,13 +20,13 @@ class HomeScreen extends StatefulWidget { class _HomeScreenState extends State { bool loadingData = true; - Wallet walletData; + Wallet walletData = Wallet.emptyWallet; void initState() { WalletProvider walletProvider = Provider.of(context, listen: false); walletProvider.loadWallet().then((value) { - if (value.totalAssets != null) { + if (value.totalAssets.isNotEmpty) { Timer(Duration(seconds: 3), () { setState(() { loadingData = false; @@ -70,7 +70,7 @@ class _HomeScreenState extends State { ), ), GestureDetector( - onTap: widget.toggleDrawer, + onTap: () => widget.toggleDrawer(), child: Icon(Icons.more_vert), ), ], diff --git a/lib/screens/home/local_widgets/expenses_chart.dart b/lib/screens/home/local_widgets/expenses_chart.dart index 2db1054..4cef78e 100644 --- a/lib/screens/home/local_widgets/expenses_chart.dart +++ b/lib/screens/home/local_widgets/expenses_chart.dart @@ -10,7 +10,7 @@ class ExpensesChart extends StatefulWidget { } class ExpensesChartState extends State { - int touchedIndex; + int? touchedIndex; @override Widget build(BuildContext context) { @@ -21,18 +21,22 @@ class ExpensesChartState extends State { Expanded( child: PieChart( PieChartData( - pieTouchData: PieTouchData(touchCallback: (pieTouchResponse) { + pieTouchData: + PieTouchData(touchCallback: (event, pieTouchResponse) { + if (pieTouchResponse == null) return; + setState(() { - if (pieTouchResponse.touchInput is FlLongPressEnd || - pieTouchResponse.touchInput is FlPanEnd) { + if (event is FlLongPressEnd || event is FlPanEndEvent) { touchedIndex = -1; } else { - touchedIndex = pieTouchResponse.touchedSectionIndex; + touchedIndex = + pieTouchResponse.touchedSection?.touchedSectionIndex; + if (touchedIndex != null) { Provider.of(context, listen: false) .setSelectedTabIndex(3); Provider.of(context, listen: false) - .setSelectedCategory(categories[touchedIndex + 1]); + .setSelectedCategory(categories[touchedIndex! + 1]); } } }); @@ -50,58 +54,31 @@ class ExpensesChartState extends State { } List showingSections() { - return List.generate(4, (i) { - final isTouched = i == touchedIndex; - final double fontSize = isTouched ? 25 : 16; - final double radius = isTouched ? 60 : 50; - switch (i) { - case 0: - return PieChartSectionData( - color: const Color(0xff0293ee), - value: 50, - title: '50%', - radius: radius, - titleStyle: TextStyle( - fontSize: fontSize, - fontWeight: FontWeight.bold, - color: const Color(0xffffffff)), - ); - case 1: - return PieChartSectionData( - color: const Color(0xfff8b250), - value: 12, - title: '12%', - radius: radius, - titleStyle: TextStyle( - fontSize: fontSize, - fontWeight: FontWeight.bold, - color: const Color(0xffffffff)), - ); - case 2: - return PieChartSectionData( - color: const Color(0xff13d38e), - value: 13, - title: '13%', - radius: radius, - titleStyle: TextStyle( - fontSize: fontSize, - fontWeight: FontWeight.bold, - color: const Color(0xffffffff)), - ); - case 3: - return PieChartSectionData( - color: const Color(0xff845bef), - value: 25, - title: '25%', - radius: radius, - titleStyle: TextStyle( - fontSize: fontSize, - fontWeight: FontWeight.bold, - color: const Color(0xffffffff)), - ); - default: - return null; - } - }); + final colorsDict = [0xff0293ee, 0xfff8b250, 0xff13d38e, 0xff845bef]; + final values = [50.0, 12.0, 13.0, 25.0]; + + return values + .asMap() + .entries + .map((entry) => _pieChartSectionData( + colorsDict[entry.key], entry.value, touchedIndex == entry.key)) + .toList(); + } + + PieChartSectionData _pieChartSectionData( + int color, double value, bool isTouched) { + final double fontSize = isTouched ? 25 : 16; + final double radius = isTouched ? 60 : 50; + + return PieChartSectionData( + color: Color(color), + value: value, + title: value.toString() + '%', + radius: radius, + titleStyle: TextStyle( + fontSize: fontSize, + fontWeight: FontWeight.bold, + color: const Color(0xffffffff)), + ); } } diff --git a/lib/screens/home/local_widgets/financial_health_stream.dart b/lib/screens/home/local_widgets/financial_health_stream.dart index a9343b0..996772d 100644 --- a/lib/screens/home/local_widgets/financial_health_stream.dart +++ b/lib/screens/home/local_widgets/financial_health_stream.dart @@ -4,7 +4,7 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:flutter_custom_dialog/flutter_custom_dialog.dart'; class FinancialHealthStream extends StatelessWidget { - FinancialHealthStream({@required this.healthSteams}); + FinancialHealthStream({required this.healthSteams}); final List healthSteams; double calculatePercentage(double fullWidth, int percentValue) { diff --git a/lib/screens/login.dart b/lib/screens/login.dart index 68d3110..7a6dfc7 100644 --- a/lib/screens/login.dart +++ b/lib/screens/login.dart @@ -76,6 +76,7 @@ class LoginScreen extends StatelessWidget { Padding( padding: EdgeInsets.only(left: 10.0, right: 10.0), child: PinCodeTextField( + appContext: context, length: 5, cursorColor: Colors.black, animationType: AnimationType.fade, diff --git a/lib/screens/register/register_step_1.dart b/lib/screens/register/register_step_1.dart index 44ce38e..037f417 100644 --- a/lib/screens/register/register_step_1.dart +++ b/lib/screens/register/register_step_1.dart @@ -44,6 +44,7 @@ class RegisterFirstScreen extends StatelessWidget { Padding( padding: EdgeInsets.only(left: 10.0, right: 10.0), child: PinCodeTextField( + appContext: context, length: 5, cursorColor: Colors.black, backgroundColor: Colors.white, @@ -75,6 +76,7 @@ class RegisterFirstScreen extends StatelessWidget { scale: 0.8, child: Switch( value: false, + onChanged: (_) {}, ), ), Text('Remember me') diff --git a/lib/utils/constants.dart b/lib/utils/constants.dart index 1ea2c38..05aed2f 100644 --- a/lib/utils/constants.dart +++ b/lib/utils/constants.dart @@ -14,7 +14,7 @@ final otpPinTheme = PinTheme( fieldWidth: 50, ); -InputDecoration roboInputDecoration({String placeholderHint}) { +InputDecoration roboInputDecoration({String? placeholderHint}) { return InputDecoration( filled: true, fillColor: Colors.white, diff --git a/lib/utils/size_config.dart b/lib/utils/size_config.dart index f0adefb..add18de 100644 --- a/lib/utils/size_config.dart +++ b/lib/utils/size_config.dart @@ -1,30 +1,30 @@ -import 'package:flutter/material.dart'; - -class SizeConfig { - static MediaQueryData _mediaQueryData; - static double screenWidth; - static double screenHeight; - static double defaultSize; - static Orientation orientation; - - void init(BuildContext context) { - _mediaQueryData = MediaQuery.of(context); - screenWidth = _mediaQueryData.size.width; - screenHeight = _mediaQueryData.size.height; - orientation = _mediaQueryData.orientation; - } -} - -// Get the proportionate height as per screen size -double getProportionateScreenHeight(double inputHeight) { - double screenHeight = SizeConfig.screenHeight; - // 812 is the layout height that designer use - return (inputHeight / 812.0) * screenHeight; -} - -// Get the proportionate height as per screen size -double getProportionateScreenWidth(double inputWidth) { - double screenWidth = SizeConfig.screenWidth; - // 375 is the layout width that designer use - return (inputWidth / 375.0) * screenWidth; -} +// import 'package:flutter/material.dart'; +// +// class SizeConfig { +// static MediaQueryData _mediaQueryData; +// static double screenWidth; +// static double screenHeight; +// static double defaultSize; +// static Orientation orientation; +// +// void init(BuildContext context) { +// _mediaQueryData = MediaQuery.of(context); +// screenWidth = _mediaQueryData.size.width; +// screenHeight = _mediaQueryData.size.height; +// orientation = _mediaQueryData.orientation; +// } +// } +// +// // Get the proportionate height as per screen size +// double getProportionateScreenHeight(double inputHeight) { +// double screenHeight = SizeConfig.screenHeight; +// // 812 is the layout height that designer use +// return (inputHeight / 812.0) * screenHeight; +// } +// +// // Get the proportionate height as per screen size +// double getProportionateScreenWidth(double inputWidth) { +// double screenWidth = SizeConfig.screenWidth; +// // 375 is the layout width that designer use +// return (inputWidth / 375.0) * screenWidth; +// } diff --git a/lib/widgets/drawer.dart b/lib/widgets/drawer.dart index cd16fa4..61e8708 100644 --- a/lib/widgets/drawer.dart +++ b/lib/widgets/drawer.dart @@ -46,6 +46,7 @@ class AppDrawer extends StatelessWidget { _createDrawerItem( icon: accountIcon, text: 'Account', + onTap: () {}, ), _createDrawerItem( icon: logoutIcon, @@ -125,7 +126,7 @@ class AppDrawer extends StatelessWidget { } Widget _createDrawerItem( - {String icon, String text, GestureTapCallback onTap}) { + {required String icon, required String text, required GestureTapCallback onTap}) { return ListTile( title: Row( children: [