upgrade-to-flutter-3 #1

Merged
motia merged 9 commits from upgrade-to-flutter-2 into master 2022-09-11 16:22:21 +00:00
30 changed files with 308 additions and 289 deletions

View file

@ -26,20 +26,16 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android { android {
compileSdkVersion 29 compileSdkVersion 31
sourceSets { sourceSets {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
} }
lintOptions {
disable 'InvalidPackage'
}
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.robo_advisory" applicationId "com.example.robo_advisory"
minSdkVersion 16 minSdkVersion 20
targetSdkVersion 29 targetSdkVersion 29
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName

View file

@ -6,11 +6,12 @@
additional functionality it is fine to subclass or reimplement additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. --> FlutterApplication and put your custom class here. -->
<application <application
android:name="io.flutter.app.FlutterApplication" android:name="${applicationName}"
android:label="robo_advisory" android:label="robo_advisory"
android:icon="@mipmap/ic_launcher"> android:icon="@mipmap/ic_launcher">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop" android:launchMode="singleTop"
android:theme="@style/LaunchTheme" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"

View file

@ -1,12 +1,12 @@
buildscript { buildscript {
ext.kotlin_version = '1.3.50' ext.kotlin_version = '1.7.10'
repositories { repositories {
google() google()
jcenter() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.5.0' classpath 'com.android.tools.build:gradle:4.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} }
} }
@ -14,7 +14,7 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
google() google()
jcenter() mavenCentral()
} }
} }

View file

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip

View file

@ -1,7 +1,7 @@
enum Flavor { MOCK, PRO } enum Flavor { MOCK, PRO }
class Injector { class Injector {
static Flavor _flavor; static late Flavor _flavor;
static void configure(Flavor flavor) { static void configure(Flavor flavor) {
_flavor = flavor; _flavor = flavor;

View file

@ -3,8 +3,8 @@ class Expenses {
String amount; String amount;
String percentage; String percentage;
Expenses({ Expenses({
this.type, required this.type,
this.amount, required this.amount,
this.percentage, required this.percentage,
}); });
} }

View file

@ -6,11 +6,11 @@ class HealthSteam {
String oneGramGoldPriceInLira; String oneGramGoldPriceInLira;
HealthSteam({ HealthSteam({
this.type, required this.type,
this.valueInPercentage, required this.valueInPercentage,
this.goldInGram, required this.goldInGram,
this.goldPriceInTurkishLira, required this.goldPriceInTurkishLira,
this.oneGramGoldPriceInLira, required this.oneGramGoldPriceInLira,
}); });
HealthSteam.fromJson(Map<dynamic, dynamic> map) HealthSteam.fromJson(Map<dynamic, dynamic> map)

View file

@ -1,7 +1,8 @@
class Category { class Category {
String name; String name;
String color; String color;
Category({this.name, this.color});
Category({required this.name, required this.color});
Category.formJson(Map<String, dynamic> map) Category.formJson(Map<String, dynamic> map)
: name = map["name"], : name = map["name"],
@ -16,7 +17,11 @@ class Transaction {
Category category; Category category;
Transaction( 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<String, dynamic> map) Transaction.fromJson(Map<String, dynamic> map)
: category = Category.formJson(map["category"]), : category = Category.formJson(map["category"]),

View file

@ -4,5 +4,11 @@ class User {
String email; String email;
String token; 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});
} }

View file

@ -11,14 +11,16 @@ class Wallet {
List<HealthSteam> healthStreams; List<HealthSteam> healthStreams;
List<Expenses> expensesChart; List<Expenses> expensesChart;
static final Wallet emptyWallet = Wallet._empty();
Wallet({ Wallet({
this.totalAssets, required this.totalAssets,
this.totalTurkishLiraPool, required this.totalTurkishLiraPool,
this.totalGoldInGram, required this.totalGoldInGram,
this.totalGoldInTurkishLira, required this.totalGoldInTurkishLira,
this.healthSteamDay, required this.healthSteamDay,
this.healthStreams, required this.healthStreams,
this.expensesChart, required this.expensesChart,
}); });
Wallet.fromMap(Map<String, dynamic> map) Wallet.fromMap(Map<String, dynamic> map)
@ -29,5 +31,15 @@ class Wallet {
healthSteamDay = map["health_stream_day"], healthSteamDay = map["health_stream_day"],
healthStreams = (map["health_stream"] as List) healthStreams = (map["health_stream"] as List)
.map((i) => HealthSteam.fromJson(i)) .map((i) => HealthSteam.fromJson(i))
.toList(); .toList(),
expensesChart = [];
Wallet._empty():
totalAssets = '',
totalTurkishLiraPool = '',
totalGoldInGram = '',
totalGoldInTurkishLira = '',
healthSteamDay = '',
healthStreams = [],
expensesChart = [];
} }

View file

@ -18,7 +18,7 @@ class AuthProvider with ChangeNotifier {
Status get loggedInStatus => _loggedInStatus; Status get loggedInStatus => _loggedInStatus;
Status get registeredInStatus => _registeredInStatus; Status get registeredInStatus => _registeredInStatus;
Future<Map<String, dynamic>> login(String email, int pinCode) async { Future login(String email, int pinCode) async {
var result; var result;
final Map<String, dynamic> loginData = { final Map<String, dynamic> loginData = {

View file

@ -3,32 +3,28 @@ import 'package:robo_advisory/models/transaction.dart';
import 'package:robo_advisory/repository/transaction.repository.dart'; import 'package:robo_advisory/repository/transaction.repository.dart';
class TransactionProvider with ChangeNotifier { class TransactionProvider with ChangeNotifier {
String _selectedCategory = "All"; String? _selectedCategory;
List<Transaction> _transactionsData; List<Transaction> _transactionsData = [];
List<Transaction> _transactionsList;
List<Transaction> get transactionList { List<Transaction> get transactionList {
if (_selectedCategory != 'All') { if (_selectedCategory == null) {
return _transactionsList = _transactionsData return _transactionsData;
.where((transaction) =>
transaction.category.name == _selectedCategory.toLowerCase())
.toList();
} else {
return _transactionsList = _transactionsData;
} }
return _transactionsData
.where((transaction) =>
transaction.category.name == _selectedCategory?.toLowerCase())
.toList();
} }
void setTransactionsList(List<Transaction> transactions) { void setTransactionsList(List<Transaction> transactions) {
_transactionsData = transactions; _transactionsData = transactions;
_transactionsList = transactions;
notifyListeners(); notifyListeners();
} }
String get selectedCategory => _selectedCategory; String? get selectedCategory => _selectedCategory;
void setSelectedCategory(String category) { void setSelectedCategory(String? category) {
_selectedCategory = category; _selectedCategory = category;
print(_selectedCategory);
notifyListeners(); notifyListeners();
} }

View file

@ -2,10 +2,10 @@ import 'package:flutter/foundation.dart';
import 'package:robo_advisory/models/user.dart'; import 'package:robo_advisory/models/user.dart';
class UserProvider with ChangeNotifier { class UserProvider with ChangeNotifier {
User _user = new User(); User _user = User.noUser;
int _selectedTabIndex = 0; int _selectedTabIndex = 0;
List<String> _categories = ["All", "Workplace", "Equipment", "Home", "Other"]; List<String> _categories = ["Workplace", "Equipment", "Home", "Other"];
List<String> get categories => _categories; List<String> get categories => _categories;

View file

@ -3,7 +3,7 @@ import 'package:robo_advisory/models/wallet.dart';
import 'package:robo_advisory/repository/wallet.repository.dart'; import 'package:robo_advisory/repository/wallet.repository.dart';
class WalletProvider with ChangeNotifier { class WalletProvider with ChangeNotifier {
Wallet _wallet = new Wallet(); Wallet _wallet = Wallet.emptyWallet;
Wallet get wallet => _wallet; Wallet get wallet => _wallet;

View file

@ -17,7 +17,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
void _openEndDrawer() { void _openEndDrawer() {
_scaffoldKey.currentState.openEndDrawer(); _scaffoldKey.currentState?.openEndDrawer();
} }
@override @override

View file

@ -3,7 +3,7 @@ import 'package:robo_advisory/theme/icons.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
class BottomNavigation extends StatelessWidget { class BottomNavigation extends StatelessWidget {
BottomNavigation({@required this.selectedIndex, @required this.onItemTapped}); BottomNavigation({required this.selectedIndex, required this.onItemTapped});
final int selectedIndex; final int selectedIndex;
final Function onItemTapped; final Function onItemTapped;
@override @override
@ -48,7 +48,7 @@ class BottomNavigation extends StatelessWidget {
showSelectedLabels: false, showSelectedLabels: false,
showUnselectedLabels: false, showUnselectedLabels: false,
currentIndex: selectedIndex, currentIndex: selectedIndex,
onTap: onItemTapped, onTap: (v) => onItemTapped(v),
); );
} }
} }

View file

@ -17,13 +17,12 @@ class HistoryScreen extends StatefulWidget {
class _HistoryScreenState extends State<HistoryScreen> { class _HistoryScreenState extends State<HistoryScreen> {
bool loadingData = true; bool loadingData = true;
List<Transaction> transactionData; List<Transaction> transactionData = [];
void initState() { void initState() {
TransactionProvider transactionProvider = TransactionProvider transactionProvider =
Provider.of<TransactionProvider>(context, listen: false); Provider.of<TransactionProvider>(context, listen: false);
transactionProvider.loadTransactions().then((value) { transactionProvider.loadTransactions().then((value) {
if (value != null) {
Timer(Duration(seconds: 3), () { Timer(Duration(seconds: 3), () {
setState(() { setState(() {
loadingData = false; loadingData = false;
@ -32,9 +31,6 @@ class _HistoryScreenState extends State<HistoryScreen> {
.setTransactionsList(transactionData); .setTransactionsList(transactionData);
}); });
}); });
}
print(value);
}); });
super.initState(); super.initState();
} }
@ -61,19 +57,25 @@ class _HistoryScreenState extends State<HistoryScreen> {
children: [ children: [
DropdownButton<String>( DropdownButton<String>(
isExpanded: true, isExpanded: true,
items: Provider.of<UserProvider>(context, listen: true) items: [
DropdownMenuItem<String>(
value: null,
child: Text('All'),
),
...Provider.of<UserProvider>(context, listen: true)
.categories .categories
.map((String value) { .map((String value) {
return DropdownMenuItem<String>( return DropdownMenuItem<String>(
value: value, value: value,
child: Text(value), child: Text(value),
); );
}).toList(), })
],
hint: new Text("Select Category"), hint: new Text("Select Category"),
value: Provider.of<TransactionProvider>(context, value: Provider.of<TransactionProvider>(context,
listen: true) listen: true)
.selectedCategory, .selectedCategory,
onChanged: (String newValue) { onChanged: (String? newValue) {
Provider.of<TransactionProvider>(context, Provider.of<TransactionProvider>(context,
listen: false) listen: false)
.setSelectedCategory(newValue); .setSelectedCategory(newValue);

View file

@ -4,7 +4,9 @@ import 'package:robo_advisory/utils/helpers.dart';
class TransactionListTile extends StatelessWidget { class TransactionListTile extends StatelessWidget {
final Transaction transactionObject; final Transaction transactionObject;
TransactionListTile({this.transactionObject});
TransactionListTile({required this.transactionObject});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( return Column(

View file

@ -12,7 +12,7 @@ import 'package:robo_advisory/screens/home/local_widgets/expenses_chart.dart';
import 'dart:async'; import 'dart:async';
class HomeScreen extends StatefulWidget { class HomeScreen extends StatefulWidget {
HomeScreen({@required this.toggleDrawer}); HomeScreen({required this.toggleDrawer});
final Function toggleDrawer; final Function toggleDrawer;
@override @override
_HomeScreenState createState() => _HomeScreenState(); _HomeScreenState createState() => _HomeScreenState();
@ -20,13 +20,13 @@ class HomeScreen extends StatefulWidget {
class _HomeScreenState extends State<HomeScreen> { class _HomeScreenState extends State<HomeScreen> {
bool loadingData = true; bool loadingData = true;
Wallet walletData; Wallet walletData = Wallet.emptyWallet;
void initState() { void initState() {
WalletProvider walletProvider = WalletProvider walletProvider =
Provider.of<WalletProvider>(context, listen: false); Provider.of<WalletProvider>(context, listen: false);
walletProvider.loadWallet().then((value) { walletProvider.loadWallet().then((value) {
if (value.totalAssets != null) { if (value.totalAssets.isNotEmpty) {
Timer(Duration(seconds: 3), () { Timer(Duration(seconds: 3), () {
setState(() { setState(() {
loadingData = false; loadingData = false;
@ -70,7 +70,7 @@ class _HomeScreenState extends State<HomeScreen> {
), ),
), ),
GestureDetector( GestureDetector(
onTap: widget.toggleDrawer, onTap: () => widget.toggleDrawer(),
child: Icon(Icons.more_vert), child: Icon(Icons.more_vert),
), ),
], ],
@ -247,7 +247,7 @@ class _HomeScreenState extends State<HomeScreen> {
SizedBox( SizedBox(
height: 20.0, height: 20.0,
), ),
ExpensesChart() Container(height: 200, width: 200, child: ExpensesChart())
], ],
) )
], ],

View file

@ -10,7 +10,15 @@ class ExpensesChart extends StatefulWidget {
} }
class ExpensesChartState extends State { class ExpensesChartState extends State {
int touchedIndex; int? touchedIndex;
bool disposed = false;
@override
void dispose() {
disposed = true;
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -21,18 +29,23 @@ class ExpensesChartState extends State {
Expanded( Expanded(
child: PieChart( child: PieChart(
PieChartData( PieChartData(
pieTouchData: PieTouchData(touchCallback: (pieTouchResponse) { pieTouchData:
PieTouchData(touchCallback: (event, pieTouchResponse) {
if (pieTouchResponse == null) return;
if (disposed) return;
setState(() { setState(() {
if (pieTouchResponse.touchInput is FlLongPressEnd || if (event is FlLongPressEnd || event is FlPanEndEvent) {
pieTouchResponse.touchInput is FlPanEnd) {
touchedIndex = -1; touchedIndex = -1;
} else { } else {
touchedIndex = pieTouchResponse.touchedSectionIndex; touchedIndex =
pieTouchResponse.touchedSection?.touchedSectionIndex;
if (touchedIndex != null) { if (touchedIndex != null) {
Provider.of<UserProvider>(context, listen: false) Provider.of<UserProvider>(context, listen: false)
.setSelectedTabIndex(3); .setSelectedTabIndex(3);
Provider.of<TransactionProvider>(context, listen: false) Provider.of<TransactionProvider>(context, listen: false)
.setSelectedCategory(categories[touchedIndex + 1]); .setSelectedCategory(categories[touchedIndex! + 1]);
} }
} }
}); });
@ -50,58 +63,31 @@ class ExpensesChartState extends State {
} }
List<PieChartSectionData> showingSections() { List<PieChartSectionData> showingSections() {
return List.generate(4, (i) { final colorsDict = [0xff0293ee, 0xfff8b250, 0xff13d38e, 0xff845bef];
final isTouched = i == touchedIndex; 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 fontSize = isTouched ? 25 : 16;
final double radius = isTouched ? 60 : 50; final double radius = isTouched ? 60 : 50;
switch (i) {
case 0:
return PieChartSectionData( return PieChartSectionData(
color: const Color(0xff0293ee), color: Color(color),
value: 50, value: value,
title: '50%', title: value.toString() + '%',
radius: radius, radius: radius,
titleStyle: TextStyle( titleStyle: TextStyle(
fontSize: fontSize, fontSize: fontSize,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: const Color(0xffffffff)), 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;
}
});
} }
} }

View file

@ -4,7 +4,7 @@ import 'package:google_fonts/google_fonts.dart';
import 'package:flutter_custom_dialog/flutter_custom_dialog.dart'; import 'package:flutter_custom_dialog/flutter_custom_dialog.dart';
class FinancialHealthStream extends StatelessWidget { class FinancialHealthStream extends StatelessWidget {
FinancialHealthStream({@required this.healthSteams}); FinancialHealthStream({required this.healthSteams});
final List<HealthSteam> healthSteams; final List<HealthSteam> healthSteams;
double calculatePercentage(double fullWidth, int percentValue) { double calculatePercentage(double fullWidth, int percentValue) {

View file

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:pin_code_fields/pin_code_fields.dart'; import 'package:pin_code_fields/pin_code_fields.dart';
import 'package:robo_advisory/utils/constants.dart'; import 'package:robo_advisory/utils/constants.dart';
import 'package:robo_advisory/config/Routes.dart'; import 'package:robo_advisory/config/Routes.dart';
import 'package:robo_advisory/widgets/buttons.dart';
class LoginScreen extends StatelessWidget { class LoginScreen extends StatelessWidget {
bool rememberSwitch = false; bool rememberSwitch = false;
@ -21,9 +22,7 @@ class LoginScreen extends StatelessWidget {
Expanded( Expanded(
child: Container( child: Container(
child: Center( child: Center(
child: FlatButton( child: ElevatedButton(
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
onPressed: () { onPressed: () {
Navigator.pushNamed(context, Routes.register); Navigator.pushNamed(context, Routes.register);
}, },
@ -76,6 +75,7 @@ class LoginScreen extends StatelessWidget {
Padding( Padding(
padding: EdgeInsets.only(left: 10.0, right: 10.0), padding: EdgeInsets.only(left: 10.0, right: 10.0),
child: PinCodeTextField( child: PinCodeTextField(
appContext: context,
length: 5, length: 5,
cursorColor: Colors.black, cursorColor: Colors.black,
animationType: AnimationType.fade, animationType: AnimationType.fade,
@ -109,9 +109,7 @@ class LoginScreen extends StatelessWidget {
// activeTrackColor: Colors.white, // activeTrackColor: Colors.white,
// activeColor: Colors.white, // activeColor: Colors.white,
), ),
FlatButton( TextButton(
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
onPressed: () { onPressed: () {
Navigator.pushNamed( Navigator.pushNamed(
context, Routes.splashScreen); context, Routes.splashScreen);
@ -125,17 +123,12 @@ class LoginScreen extends StatelessWidget {
), ),
SizedBox( SizedBox(
width: double.infinity, width: double.infinity,
child: RaisedButton( child: ElevatedButton(
color: Color(0xFF495057), style: mainButtonStyle(),
textColor: Colors.white,
onPressed: () { onPressed: () {
Navigator.pushNamed(context, Routes.dashboard); Navigator.pushNamed(context, Routes.dashboard);
}, },
child: Text('Log In'), child: Text('Log In'),
padding: EdgeInsets.all(18.0),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
),
), ),
) )
], ],

View file

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:pin_code_fields/pin_code_fields.dart'; import 'package:pin_code_fields/pin_code_fields.dart';
import 'package:robo_advisory/utils/constants.dart'; import 'package:robo_advisory/utils/constants.dart';
import 'package:robo_advisory/screens/register/register_step_2.dart'; import 'package:robo_advisory/screens/register/register_step_2.dart';
import 'package:robo_advisory/widgets/buttons.dart';
class RegisterFirstScreen extends StatelessWidget { class RegisterFirstScreen extends StatelessWidget {
@override @override
@ -44,6 +45,7 @@ class RegisterFirstScreen extends StatelessWidget {
Padding( Padding(
padding: EdgeInsets.only(left: 10.0, right: 10.0), padding: EdgeInsets.only(left: 10.0, right: 10.0),
child: PinCodeTextField( child: PinCodeTextField(
appContext: context,
length: 5, length: 5,
cursorColor: Colors.black, cursorColor: Colors.black,
backgroundColor: Colors.white, backgroundColor: Colors.white,
@ -75,6 +77,7 @@ class RegisterFirstScreen extends StatelessWidget {
scale: 0.8, scale: 0.8,
child: Switch( child: Switch(
value: false, value: false,
onChanged: (_) {},
), ),
), ),
Text('Remember me') Text('Remember me')
@ -87,9 +90,8 @@ class RegisterFirstScreen extends StatelessWidget {
), ),
SizedBox( SizedBox(
width: double.infinity, width: double.infinity,
child: RaisedButton( child: ElevatedButton(
color: Color(0xFF495057), style: mainButtonStyle(),
textColor: Colors.white,
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,
@ -101,10 +103,6 @@ class RegisterFirstScreen extends StatelessWidget {
); );
}, },
child: Text('Continue'), child: Text('Continue'),
padding: EdgeInsets.all(18.0),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
),
), ),
) )
], ],

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:robo_advisory/utils/constants.dart'; import 'package:robo_advisory/utils/constants.dart';
import 'package:robo_advisory/config/Routes.dart'; import 'package:robo_advisory/config/Routes.dart';
import 'package:robo_advisory/widgets/buttons.dart';
class RegisterSecondScreen extends StatelessWidget { class RegisterSecondScreen extends StatelessWidget {
@override @override
@ -56,18 +57,13 @@ class RegisterSecondScreen extends StatelessWidget {
), ),
SizedBox( SizedBox(
width: double.infinity, width: double.infinity,
child: RaisedButton( child: ElevatedButton(
color: Color(0xFF495057), style: mainButtonStyle(),
textColor: Colors.white,
onPressed: () { onPressed: () {
Navigator.pushNamed(context, Routes.dashboard); Navigator.pushNamed(context, Routes.dashboard);
print('Next Step'); print('Next Step');
}, },
child: Text('Register'), child: Text('Register'),
padding: EdgeInsets.all(18.0),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
),
), ),
) )
], ],

View file

@ -14,7 +14,7 @@ final otpPinTheme = PinTheme(
fieldWidth: 50, fieldWidth: 50,
); );
InputDecoration roboInputDecoration({String placeholderHint}) { InputDecoration roboInputDecoration({String? placeholderHint}) {
return InputDecoration( return InputDecoration(
filled: true, filled: true,
fillColor: Colors.white, fillColor: Colors.white,

View file

@ -1,30 +1,30 @@
import 'package:flutter/material.dart'; // import 'package:flutter/material.dart';
//
class SizeConfig { // class SizeConfig {
static MediaQueryData _mediaQueryData; // static MediaQueryData _mediaQueryData;
static double screenWidth; // static double screenWidth;
static double screenHeight; // static double screenHeight;
static double defaultSize; // static double defaultSize;
static Orientation orientation; // static Orientation orientation;
//
void init(BuildContext context) { // void init(BuildContext context) {
_mediaQueryData = MediaQuery.of(context); // _mediaQueryData = MediaQuery.of(context);
screenWidth = _mediaQueryData.size.width; // screenWidth = _mediaQueryData.size.width;
screenHeight = _mediaQueryData.size.height; // screenHeight = _mediaQueryData.size.height;
orientation = _mediaQueryData.orientation; // orientation = _mediaQueryData.orientation;
} // }
} // }
//
// Get the proportionate height as per screen size // // Get the proportionate height as per screen size
double getProportionateScreenHeight(double inputHeight) { // double getProportionateScreenHeight(double inputHeight) {
double screenHeight = SizeConfig.screenHeight; // double screenHeight = SizeConfig.screenHeight;
// 812 is the layout height that designer use // // 812 is the layout height that designer use
return (inputHeight / 812.0) * screenHeight; // return (inputHeight / 812.0) * screenHeight;
} // }
//
// Get the proportionate height as per screen size // // Get the proportionate height as per screen size
double getProportionateScreenWidth(double inputWidth) { // double getProportionateScreenWidth(double inputWidth) {
double screenWidth = SizeConfig.screenWidth; // double screenWidth = SizeConfig.screenWidth;
// 375 is the layout width that designer use // // 375 is the layout width that designer use
return (inputWidth / 375.0) * screenWidth; // return (inputWidth / 375.0) * screenWidth;
} // }

11
lib/widgets/buttons.dart Normal file
View file

@ -0,0 +1,11 @@
import 'package:flutter/material.dart';
mainButtonStyle() {
return ElevatedButton.styleFrom(
backgroundColor: Color(0xFF495057),
foregroundColor: Colors.white,
padding: EdgeInsets.all(18.0),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
));
}

View file

@ -46,6 +46,7 @@ class AppDrawer extends StatelessWidget {
_createDrawerItem( _createDrawerItem(
icon: accountIcon, icon: accountIcon,
text: 'Account', text: 'Account',
onTap: () {},
), ),
_createDrawerItem( _createDrawerItem(
icon: logoutIcon, icon: logoutIcon,
@ -125,7 +126,7 @@ class AppDrawer extends StatelessWidget {
} }
Widget _createDrawerItem( Widget _createDrawerItem(
{String icon, String text, GestureTapCallback onTap}) { {required String icon, required String text, required GestureTapCallback onTap}) {
return ListTile( return ListTile(
title: Row( title: Row(
children: <Widget>[ children: <Widget>[

View file

@ -7,98 +7,84 @@ packages:
name: async name: async
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.5.0-nullsafety.1" version: "2.9.0"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
name: boolean_selector name: boolean_selector
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0-nullsafety.1" version: "2.1.0"
characters: characters:
dependency: transitive dependency: transitive
description: description:
name: characters name: characters
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0-nullsafety.3" version: "1.2.1"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0-nullsafety.1"
clock: clock:
dependency: transitive dependency: transitive
description: description:
name: clock name: clock
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0-nullsafety.1" version: "1.1.1"
collection: collection:
dependency: transitive dependency: transitive
description: description:
name: collection name: collection
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.15.0-nullsafety.3" version: "1.16.0"
convert:
dependency: transitive
description:
name: convert
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
crypto: crypto:
dependency: transitive dependency: transitive
description: description:
name: crypto name: crypto
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.5" version: "3.0.2"
cupertino_icons: cupertino_icons:
dependency: "direct main" dependency: "direct main"
description: description:
name: cupertino_icons name: cupertino_icons
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.0.5"
equatable: equatable:
dependency: transitive dependency: transitive
description: description:
name: equatable name: equatable
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.5" version: "2.0.5"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
name: fake_async name: fake_async
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.0-nullsafety.1" version: "1.3.1"
ffi: ffi:
dependency: transitive dependency: transitive
description: description:
name: ffi name: ffi
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.3" version: "1.2.1"
file: file:
dependency: transitive dependency: transitive
description: description:
name: file name: file
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.2.1" version: "6.1.4"
fl_chart: fl_chart:
dependency: "direct main" dependency: "direct main"
description: description:
name: fl_chart name: fl_chart
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.12.0" version: "0.55.1"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
@ -110,21 +96,21 @@ packages:
name: flutter_custom_dialog name: flutter_custom_dialog
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.20" version: "1.3.0"
flutter_spinkit: flutter_spinkit:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_spinkit name: flutter_spinkit
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.1.2+1" version: "5.1.0"
flutter_svg: flutter_svg:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_svg name: flutter_svg
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.19.1" version: "1.1.5"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -141,196 +127,224 @@ packages:
name: google_fonts name: google_fonts
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.1" version: "3.0.1"
http: http:
dependency: "direct main" dependency: "direct main"
description: description:
name: http name: http
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.12.2" version: "0.13.5"
http_parser: http_parser:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.1.4" version: "4.0.1"
intl: js:
dependency: transitive dependency: transitive
description: description:
name: intl name: js
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.16.1" version: "0.6.4"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
name: matcher name: matcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.12.10-nullsafety.1" version: "0.12.12"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.5"
meta: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.0-nullsafety.3" version: "1.8.0"
nested: nested:
dependency: transitive dependency: transitive
description: description:
name: nested name: nested
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.0.4" version: "1.0.0"
path: path:
dependency: transitive dependency: transitive
description: description:
name: path name: path
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0-nullsafety.1" version: "1.8.2"
path_drawing: path_drawing:
dependency: transitive dependency: transitive
description: description:
name: path_drawing name: path_drawing
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.1+1" version: "1.0.1"
path_parsing: path_parsing:
dependency: transitive dependency: transitive
description: description:
name: path_parsing name: path_parsing
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.4" version: "1.0.1"
path_provider: path_provider:
dependency: transitive dependency: transitive
description: description:
name: path_provider name: path_provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.6.24" version: "2.0.11"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.20"
path_provider_ios:
dependency: transitive
description:
name: path_provider_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
path_provider_linux: path_provider_linux:
dependency: transitive dependency: transitive
description: description:
name: path_provider_linux name: path_provider_linux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.0.1+2" version: "2.1.7"
path_provider_macos: path_provider_macos:
dependency: transitive dependency: transitive
description: description:
name: path_provider_macos name: path_provider_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.0.4+6" version: "2.0.6"
path_provider_platform_interface: path_provider_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: path_provider_platform_interface name: path_provider_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.4" version: "2.0.4"
path_provider_windows: path_provider_windows:
dependency: transitive dependency: transitive
description: description:
name: path_provider_windows name: path_provider_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.0.4+3" version: "2.0.7"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.dartlang.org"
source: hosted
version: "1.9.2"
petitparser: petitparser:
dependency: transitive dependency: transitive
description: description:
name: petitparser name: petitparser
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.1.0" version: "5.0.0"
pin_code_fields: pin_code_fields:
dependency: "direct main" dependency: "direct main"
description: description:
name: pin_code_fields name: pin_code_fields
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.1" version: "7.4.0"
platform: platform:
dependency: transitive dependency: transitive
description: description:
name: platform name: platform
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.1" version: "3.1.0"
plugin_platform_interface: plugin_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: plugin_platform_interface name: plugin_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.3" version: "2.1.2"
process: process:
dependency: transitive dependency: transitive
description: description:
name: process name: process
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.13" version: "4.2.4"
provider: provider:
dependency: "direct main" dependency: "direct main"
description: description:
name: provider name: provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.3.2+2" version: "6.0.3"
shared_preferences: shared_preferences:
dependency: "direct main" dependency: "direct main"
description: description:
name: shared_preferences name: shared_preferences
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.5.12+4" version: "2.0.15"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.13"
shared_preferences_ios:
dependency: transitive
description:
name: shared_preferences_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
shared_preferences_linux: shared_preferences_linux:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_linux name: shared_preferences_linux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.0.2+4" version: "2.1.1"
shared_preferences_macos: shared_preferences_macos:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_macos name: shared_preferences_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.0.1+11" version: "2.0.4"
shared_preferences_platform_interface: shared_preferences_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_platform_interface name: shared_preferences_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.4" version: "2.1.0"
shared_preferences_web: shared_preferences_web:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_web name: shared_preferences_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.2+7" version: "2.0.4"
shared_preferences_windows: shared_preferences_windows:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_windows name: shared_preferences_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.0.1+3" version: "2.1.1"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -342,77 +356,77 @@ packages:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0-nullsafety.2" version: "1.9.0"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
name: stack_trace name: stack_trace
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.10.0-nullsafety.1" version: "1.10.0"
stream_channel: stream_channel:
dependency: transitive dependency: transitive
description: description:
name: stream_channel name: stream_channel
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0-nullsafety.1" version: "2.1.0"
string_scanner: string_scanner:
dependency: transitive dependency: transitive
description: description:
name: string_scanner name: string_scanner
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0-nullsafety.1" version: "1.1.1"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
name: term_glyph name: term_glyph
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.0-nullsafety.1" version: "1.2.1"
test_api: test_api:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.19-nullsafety.2" version: "0.4.12"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
name: typed_data name: typed_data
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.0-nullsafety.3" version: "1.3.0"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
name: vector_math name: vector_math
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0-nullsafety.3" version: "2.1.2"
win32: win32:
dependency: transitive dependency: transitive
description: description:
name: win32 name: win32
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.7.4" version: "2.5.2"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:
name: xdg_directories name: xdg_directories
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.2" version: "0.2.0+2"
xml: xml:
dependency: transitive dependency: transitive
description: description:
name: xml name: xml
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.5.1" version: "6.1.0"
sdks: sdks:
dart: ">=2.10.0-110 <2.11.0" dart: ">=2.17.0 <3.0.0"
flutter: ">=1.22.0 <2.0.0" flutter: ">=2.11.0-0.1.pre"

View file

@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1 version: 1.0.0+1
environment: environment:
sdk: ">=2.7.0 <3.0.0" sdk: ">=2.16.2 <3.0.0"
dependencies: dependencies:
flutter: flutter:
@ -28,15 +28,15 @@ dependencies:
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.0 cupertino_icons: ^1.0.0
provider: ^4.3.2+2 provider: ^6.0.3
http: ^0.12.2 http: ^0.13.5
shared_preferences: ^0.5.12+4 shared_preferences: ^2.0.15
flutter_spinkit: ^4.1.2+1 flutter_spinkit: ^5.1.0
pin_code_fields: ^6.0.1 pin_code_fields: ^7.4.0
flutter_svg: ^0.19.1 flutter_svg: ^1.1.5
google_fonts: ^1.1.1 google_fonts: ^3.0.1
fl_chart: ^0.12.0 fl_chart: ^0.55.1
flutter_custom_dialog: ^1.0.20 flutter_custom_dialog: ^1.3.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter