Merge pull request 'login , logout,auth' (#8) from snehalatha_dev into dev
Reviewed-on: #8
This commit is contained in:
commit
5c908de83d
|
@ -5,9 +5,11 @@
|
|||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.build/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
.swiftpm/
|
||||
migrate_working_dir/
|
||||
|
||||
# IntelliJ related
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:konectar_events/contacts_module/constants.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/interactionprovider.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/model/interaction_data.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/util.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/viewinteractionprovider.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/widget/custombutton.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/widget/customrangeslider.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/widget/responsive_ext.dart';
|
||||
import 'package:dropdownfield2/dropdownfield2.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
@ -16,6 +8,15 @@ import 'package:flutter/rendering.dart';
|
|||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:konectar_events/contacts_module/constants.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/interactionprovider.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/model/interaction_data.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/viewinteractionprovider.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/widget/customrangeslider.dart';
|
||||
import 'package:konectar_events/contacts_module/ui_screen/interactionform/widget/responsive_ext.dart';
|
||||
import 'package:konectar_events/utils/appcolors.dart';
|
||||
import 'package:konectar_events/utils/util.dart';
|
||||
import 'package:konectar_events/widgets/custombutton.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:popover/popover.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
@ -102,7 +103,7 @@ class _InteractionScreen1State extends State<InteractionScreen1> {
|
|||
setState(() {});
|
||||
}
|
||||
|
||||
final CarouselController _controller = CarouselController();
|
||||
final FlutterCarouselController _controller = FlutterCarouselController();
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
|
@ -157,7 +158,7 @@ class _InteractionScreen1State extends State<InteractionScreen1> {
|
|||
// sectionList = item.sectionList;
|
||||
// print("Section_ListttPooja: $sectionList");
|
||||
FlutterCarousel(
|
||||
options: CarouselOptions(
|
||||
options: FlutterCarouselOptions(
|
||||
onPageChanged: (index, reason) {
|
||||
setState(() {
|
||||
_currentPage = index;
|
||||
|
|
|
@ -60,7 +60,7 @@ class _EditInteractionScreenState extends State<EditInteractionScreen1> {
|
|||
String? fileName;
|
||||
final TextEditingController textEditingController = TextEditingController();
|
||||
|
||||
final CarouselController _controller = CarouselController();
|
||||
final FlutterCarouselController _controller = FlutterCarouselController();
|
||||
|
||||
int _currentPage = 0;
|
||||
late int _totalPages =
|
||||
|
@ -156,7 +156,7 @@ class _EditInteractionScreenState extends State<EditInteractionScreen1> {
|
|||
// var item = provider.interactionReponseList[index];
|
||||
// sectionList = item.sectionList;
|
||||
child: FlutterCarousel(
|
||||
options: CarouselOptions(
|
||||
options: FlutterCarouselOptions(
|
||||
onPageChanged: (index, reason) {
|
||||
setState(() {
|
||||
_currentPage = index;
|
||||
|
|
|
@ -260,39 +260,41 @@ Future main() async {
|
|||
create: (_) => HiveDataRepository(
|
||||
Hive.box<InteractionConfigData>('InteractionConfigDataBox'))),
|
||||
],
|
||||
child: SafeArea(
|
||||
top: true,
|
||||
child: MaterialApp(
|
||||
theme: ThemeData(
|
||||
//fontFamily: "SourceSerif",
|
||||
),
|
||||
debugShowCheckedModeBanner: false,
|
||||
title: 'Dynamic Links Example',
|
||||
initialRoute: '/',
|
||||
routes: <String, WidgetBuilder>{
|
||||
'/': (BuildContext context) => FutureBuilder<bool>(
|
||||
future: SessionManager().isLoggedIn(),
|
||||
builder: (context, snapshot) {
|
||||
print("Data_is : $snapshot");
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
return const CircularProgressIndicator();
|
||||
} else if (snapshot.hasError) {
|
||||
return Text('Error: ${snapshot.error}');
|
||||
} else {
|
||||
final isLoggedIn = snapshot.data ?? false;
|
||||
print("isLoggedIn_is : $isLoggedIn");
|
||||
print("secret : $secretkey");
|
||||
return isLoggedIn
|
||||
? NavigationHomeScreen()
|
||||
: IntroductionAnimationScreen();
|
||||
}
|
||||
},
|
||||
), //userInfo != null ? const Home() : OpenidScreen(credential: credential,),
|
||||
// '/details': (BuildContext context) => const HomeScreen(),
|
||||
},
|
||||
),
|
||||
child:
|
||||
// SafeArea(
|
||||
// top: true,
|
||||
// child:
|
||||
MaterialApp(
|
||||
theme: ThemeData(
|
||||
//fontFamily: "SourceSerif",
|
||||
),
|
||||
debugShowCheckedModeBanner: false,
|
||||
title: 'Dynamic Links Example',
|
||||
initialRoute: '/',
|
||||
routes: <String, WidgetBuilder>{
|
||||
'/': (BuildContext context) => FutureBuilder<bool>(
|
||||
future: SessionManager().isLoggedIn(),
|
||||
builder: (context, snapshot) {
|
||||
print("Data_is : $snapshot");
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
return const CircularProgressIndicator();
|
||||
} else if (snapshot.hasError) {
|
||||
return Text('Error: ${snapshot.error}');
|
||||
} else {
|
||||
final isLoggedIn = snapshot.data ?? false;
|
||||
print("isLoggedIn_is : $isLoggedIn");
|
||||
print("secret : $secretkey");
|
||||
return isLoggedIn
|
||||
? NavigationHomeScreen()
|
||||
: IntroductionAnimationScreen();
|
||||
}
|
||||
},
|
||||
), //userInfo != null ? const Home() : OpenidScreen(credential: credential,),
|
||||
// '/details': (BuildContext context) => const HomeScreen(),
|
||||
},
|
||||
),
|
||||
),
|
||||
// ),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -27,13 +27,15 @@ import 'package:konectar_events/model/verify_user_resp.dart';
|
|||
import 'package:konectar_events/utils/constants.dart';
|
||||
import 'package:konectar_events/viewmodel/hive_repository.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
class ApiCall {
|
||||
final dio = Dio();
|
||||
final Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
|
||||
|
||||
late Future<String> _token;
|
||||
|
||||
String newtoken =
|
||||
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzZWNyZXRlVG9rZW4iOiJiYjNmOTZmYmI5Y2U3ZjA2ZTliOTlkMzRiMGM3YjZkZTBlNjBmYWYzYmM1NDFhZjY0MGQ5ZjAzMGRlNzMxOWM4ZTAwZWNkMCIsImlhdCI6MTczNDM0OTUwNywiZXhwIjoxNzM0MzUxMzA3fQ.nN5XtgmWHVGGdyLEdICY6jTmlg1070rGFwsdyOd4CYY";
|
||||
//K1 API CALLS
|
||||
Future<dynamic> parseInfo() async {
|
||||
Dio dio = Dio();
|
||||
|
@ -123,38 +125,44 @@ class ApiCall {
|
|||
return client;
|
||||
};
|
||||
Response response;
|
||||
var formData = FormData.fromMap({
|
||||
"start": "2024-12-05",
|
||||
"end": "2024-12-31",
|
||||
"order_by": 8,
|
||||
'type': type ?? 1
|
||||
});
|
||||
String date = "2024-12-17";
|
||||
var formData =
|
||||
FormData.fromMap({"start": date, "order_by": 7, 'type': type ?? 1});
|
||||
// "end": DateTime(2024, 12, 14).toIso8601String(),
|
||||
_token = _prefs.then((SharedPreferences prefs) {
|
||||
return prefs.getString('token') ?? "";
|
||||
});
|
||||
print("SAVED TOKEN :${await _token}");
|
||||
response =
|
||||
await dio.post('${EventsConstants.url}${EventsConstants.eventslistapi}',
|
||||
options: Options(headers: {
|
||||
"Authorization": "Bearer ${await _token}",
|
||||
}),
|
||||
// queryParameters: {
|
||||
// "user_email": "vinodh@aissel.com",
|
||||
// "project_id": "",
|
||||
// "start": 2024 - 11 - 22,
|
||||
// "end": "",
|
||||
// "order_by": 7,
|
||||
// "type": 1,
|
||||
// },
|
||||
data: formData);
|
||||
print("response user eventssssss here!!!!!!!!!!!!!!!!!!!!! ");
|
||||
print(response.data.toString());
|
||||
Map<String, dynamic> jsondata = json.decode(response.data);
|
||||
try {
|
||||
// dio.options.contentType = Headers.multipartFormDataContentType;
|
||||
// dio.options.baseUrl = "https://cardio-staging.konectar.io/";
|
||||
|
||||
EventsData eventresponse = EventsData.fromJson(jsondata);
|
||||
List<EventsList>? eventdata = eventresponse.events;
|
||||
return eventdata!;
|
||||
// dio.options.headers["Authorization"] = "Bearer ${newtoken}";
|
||||
|
||||
response = await dio.post(
|
||||
'https://cardio-staging.konectar.io/apis/v1/events/loadFutureEvents/',
|
||||
options: Options(
|
||||
contentType: "multipart/form-data",
|
||||
followRedirects: false,
|
||||
// will not throw errors
|
||||
validateStatus: (status) => true,
|
||||
headers: {
|
||||
'Authorization': 'Bearer ${newtoken}',
|
||||
}),
|
||||
data: formData);
|
||||
|
||||
print("RESPONSE");
|
||||
print(response.data.toString());
|
||||
Map<String, dynamic> jsondata = json.decode(response.data);
|
||||
|
||||
EventsData eventresponse = EventsData.fromJson(jsondata);
|
||||
List<EventsList>? eventdata = eventresponse.events;
|
||||
return eventdata!;
|
||||
} catch (e) {
|
||||
print("EXCEPTION:${e.toString()}");
|
||||
}
|
||||
print("response user eventssssss here!!!!!!!!!!!!!!!!!!!!! ");
|
||||
return [];
|
||||
}
|
||||
|
||||
Future<dynamic> followUnfollowEvent(String flag, String eventid) async {
|
||||
|
@ -588,7 +596,7 @@ class ApiCall {
|
|||
|
||||
//VERIFY EMAIL K1
|
||||
Future<dynamic> verifyEmail(
|
||||
String email, String deviceid, String platform) async {
|
||||
String url, String email, String deviceid, String platform) async {
|
||||
Dio dio = Dio();
|
||||
(dio.httpClientAdapter as IOHttpClientAdapter).onHttpClientCreate =
|
||||
(HttpClient client) {
|
||||
|
@ -601,19 +609,25 @@ class ApiCall {
|
|||
"email_id": email,
|
||||
"device_id": deviceid,
|
||||
});
|
||||
response = await dio.post(
|
||||
'${EventsConstants.loginUrl}${EventsConstants.getVerificationCode}',
|
||||
options: Options(),
|
||||
data: formData);
|
||||
if (response.statusCode == 200) {
|
||||
print("response user login!!!!!!!!!!!!!!!!!!!!! \n ${response.data} ");
|
||||
Map<String, dynamic> jsondata = json.decode(response.data);
|
||||
try {
|
||||
response = await dio.post(
|
||||
'${url}${EventsConstants.loginmodule}/${EventsConstants.getVerificationCode}',
|
||||
options: Options(),
|
||||
data: formData);
|
||||
if (response.statusCode == 200) {
|
||||
print("response user login!!!!!!!!!!!!!!!!!!!!! \n ${response.data} ");
|
||||
//Map<String, dynamic> jsondata = json.decode(response.data);
|
||||
VerificationResponse verificationResponse =
|
||||
verificationResponseFromJson(response.data);
|
||||
return verificationResponse;
|
||||
} else {
|
||||
print("isEmpty");
|
||||
return null;
|
||||
}
|
||||
} catch (e) {
|
||||
VerificationResponse verificationResponse =
|
||||
verificationResponseFromJson(response.data);
|
||||
VerificationResponse(status: 1401, message: "Invalid Domain");
|
||||
return verificationResponse;
|
||||
} else {
|
||||
print("isEmpty");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -656,14 +670,24 @@ class ApiCall {
|
|||
(X509Certificate cert, String host, int port) => true;
|
||||
return client;
|
||||
};
|
||||
print("email : $email,device : $deviceid");
|
||||
_token = _prefs.then((SharedPreferences prefs) {
|
||||
return prefs.getString('token') ?? "";
|
||||
});
|
||||
Response response;
|
||||
print("url :${EventsConstants.loginUrl}${EventsConstants.logout}");
|
||||
print("url :${EventsConstants.loginUrl}${EventsConstants.logout}/");
|
||||
var formData = FormData.fromMap({
|
||||
"email_id": email,
|
||||
"device_id": deviceid,
|
||||
});
|
||||
response = await dio.post(
|
||||
'${EventsConstants.loginUrl}${EventsConstants.logout}',
|
||||
options: Options(
|
||||
contentType: "application/x-www-form-urlencoded",
|
||||
followRedirects: false,
|
||||
// will not throw errors
|
||||
validateStatus: (status) => true,
|
||||
headers: {"Authorization": "Bearer $_token"}),
|
||||
data: formData,
|
||||
// queryParameters: {
|
||||
// "token": token,
|
||||
|
|
|
@ -19,16 +19,6 @@ class AppTheme {
|
|||
static const Color spacer = Color(0xFFF2F2F2);
|
||||
static const String fontName = 'WorkSans';
|
||||
|
||||
static const TextTheme textTheme = TextTheme(
|
||||
headline4: display1,
|
||||
headline5: headline,
|
||||
headline6: title,
|
||||
subtitle2: subtitle,
|
||||
bodyText2: body2,
|
||||
bodyText1: body1,
|
||||
caption: caption,
|
||||
);
|
||||
|
||||
static const TextStyle display1 = TextStyle(
|
||||
// h4 -> display1
|
||||
fontFamily: fontName,
|
||||
|
|
|
@ -37,13 +37,13 @@ class FieldValidation {
|
|||
|
||||
static String validateUrl(String url) {
|
||||
if (url.isEmpty) {
|
||||
return 'Please enter application url';
|
||||
return 'Please enter domain url';
|
||||
} else {
|
||||
bool isURLValid = Uri.parse(url).host.isNotEmpty;
|
||||
if (isURLValid) {
|
||||
return '';
|
||||
} else {
|
||||
return 'Please enter valid application url';
|
||||
return 'Please enter valid domain url';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import 'package:konectar_events/viewmodel/loginprovider.dart';
|
|||
import 'package:konectar_events/widgets/customappbar.dart';
|
||||
import 'package:konectar_events/widgets/custombutton.dart';
|
||||
import 'package:konectar_events/widgets/customtextfield.dart';
|
||||
import 'package:konectar_events/widgets/snackbar.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:mobile_device_identifier/mobile_device_identifier.dart';
|
||||
|
@ -52,7 +53,6 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||
void initState() {
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
||||
init();
|
||||
provider = Provider.of<LoginProvider>(context, listen: false);
|
||||
initDeviceId();
|
||||
if (Platform.isAndroid) {
|
||||
|
@ -98,10 +98,6 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||
print("DEVICE ID########################## :$deviceId");
|
||||
}
|
||||
|
||||
init() async {
|
||||
await ApiCall().parseInfo();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Consumer<LoginProvider>(
|
||||
|
@ -281,6 +277,28 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||
const SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
SizedBox(
|
||||
height: 50,
|
||||
child: TextField(
|
||||
controller: domainTextConrtroller,
|
||||
style: TextStyle(fontSize: isTablet ? 18.0 : 16),
|
||||
decoration: InputDecoration(
|
||||
border: const OutlineInputBorder(),
|
||||
labelStyle: TextStyle(fontSize: isTablet ? 18.0 : 16),
|
||||
labelText: "Domain",
|
||||
hintStyle: TextStyle(fontSize: isTablet ? 18.0 : 16),
|
||||
prefix: Text("https://"),
|
||||
suffix: Text(".io/"),
|
||||
hintText: "Enter your Domain"),
|
||||
),
|
||||
),
|
||||
// CustomTextField(
|
||||
// labelText: "Domain Url",
|
||||
// controller: domainTextConrtroller,
|
||||
// ),
|
||||
const SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
CustomTextField(
|
||||
labelText: "Email", controller: emailTextController),
|
||||
// const SizedBox(),
|
||||
|
@ -307,12 +325,11 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||
child: CustomButton(
|
||||
backgroundColor: EventsConstants.onboardButtonColor,
|
||||
onPressed: () async {
|
||||
setState(() {
|
||||
print("loading");
|
||||
provider.loading = true;
|
||||
});
|
||||
|
||||
if (textFieldsValidation(provider).isEmpty) {
|
||||
setState(() {
|
||||
print("loading");
|
||||
provider.loading = true;
|
||||
});
|
||||
print("email:${emailTextController.text}");
|
||||
// if (await _logout) {
|
||||
// print("LOGOUT");
|
||||
|
@ -341,44 +358,57 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||
provider.email = emailTextController.text;
|
||||
// String encoded =
|
||||
// base64.encode(utf8.encode(deviceId));
|
||||
|
||||
VerificationResponse resp = await provider.verifyEmail(
|
||||
String domain =
|
||||
"https://${domainTextConrtroller.text}.io/";
|
||||
var resp = await provider.verifyEmail(domain,
|
||||
emailTextController.text, deviceId!, platform);
|
||||
print("resp:${resp.status}");
|
||||
if (resp != null) {
|
||||
print("resp:${resp.status}");
|
||||
|
||||
if (resp.status == 1200 &&
|
||||
resp.verification_code != null) {
|
||||
provider.loading = false;
|
||||
provider.showCodeField = true;
|
||||
provider.showMessage = true;
|
||||
} else if (resp.status == 1200 &&
|
||||
resp.accessToken != "") {
|
||||
provider.loading = false;
|
||||
provider.showCodeField = false;
|
||||
provider.showMessage = true;
|
||||
_displaySnackBar("You have logged in successfully");
|
||||
_saveprefs(
|
||||
resp.accessToken!,
|
||||
resp.user?.email ?? emailTextController.text,
|
||||
secretKeyTextConrtroller.text,
|
||||
deviceId!,
|
||||
true)
|
||||
.then((value) {
|
||||
Navigator.of(context).pushReplacement(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => NavigationHomeScreen()),
|
||||
);
|
||||
if (resp.status == 1200 &&
|
||||
resp.verification_code != null) {
|
||||
provider.loading = false;
|
||||
provider.showCodeField = true;
|
||||
provider.showMessage = true;
|
||||
// secretKeyTextConrtroller.text =
|
||||
// resp.verification_code!;
|
||||
} else if (resp.status == 1200 &&
|
||||
resp.accessToken != "") {
|
||||
provider.loading = false;
|
||||
provider.showCodeField = false;
|
||||
|
||||
provider.showMessage = true;
|
||||
SnackBarWidget.displaySnackBar(
|
||||
"You have logged in successfully", context);
|
||||
_saveprefs(
|
||||
resp.accessToken!,
|
||||
resp.user?.email ??
|
||||
emailTextController.text,
|
||||
secretKeyTextConrtroller.text,
|
||||
deviceId!,
|
||||
true)
|
||||
.then((value) {
|
||||
Navigator.of(context).pushReplacement(
|
||||
MaterialPageRoute(
|
||||
builder: (context) =>
|
||||
NavigationHomeScreen()),
|
||||
);
|
||||
});
|
||||
} else {
|
||||
provider.loading = false;
|
||||
provider.showCodeField = false;
|
||||
// provider.showMessage = true;
|
||||
SnackBarWidget.displaySnackBar(
|
||||
resp.message, context,
|
||||
error: true);
|
||||
();
|
||||
}
|
||||
|
||||
provider.message = resp.message;
|
||||
setState(() {
|
||||
emailTextController.text = provider.email!;
|
||||
});
|
||||
} else {
|
||||
provider.loading = false;
|
||||
provider.showCodeField = false;
|
||||
provider.showMessage = true;
|
||||
}
|
||||
|
||||
provider.message = resp.message;
|
||||
setState(() {
|
||||
emailTextController.text = provider.email!;
|
||||
});
|
||||
} else {
|
||||
provider.code = secretKeyTextConrtroller.text;
|
||||
VerificationResponse resp = await provider.verifyCode(
|
||||
|
@ -409,6 +439,7 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||
secretKeyTextConrtroller.text = provider.code!;
|
||||
});
|
||||
}
|
||||
|
||||
// }
|
||||
|
||||
//_joinMeeting(roomText.text, "demo meet2");
|
||||
|
@ -479,7 +510,7 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||
return secretkey;
|
||||
});
|
||||
_verification_code =
|
||||
prefs.setString('verfication_code', key).then((bool success) {
|
||||
prefs.setString('deviceid', vcode).then((bool success) {
|
||||
return verification_code;
|
||||
});
|
||||
_login = prefs.setBool('isloggedin', login).then((bool success) {
|
||||
|
@ -505,12 +536,15 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||
// if (FieldValidation.validateName(nameTextController.text).isNotEmpty) {
|
||||
// return FieldValidation.validateName(nameTextController.text);
|
||||
// }
|
||||
String domain = "https://${domainTextConrtroller.text}.io/";
|
||||
|
||||
if (FieldValidation.validateUrl(domain).isNotEmpty) {
|
||||
return FieldValidation.validateUrl(domain);
|
||||
}
|
||||
if (FieldValidation.validateEmail(emailTextController.text).isNotEmpty) {
|
||||
return FieldValidation.validateEmail(emailTextController.text);
|
||||
}
|
||||
// if (FieldValidation.validateUrl(domainTextConrtroller.text).isNotEmpty) {
|
||||
// return FieldValidation.validateUrl(domainTextConrtroller.text);
|
||||
// }
|
||||
|
||||
if (provider.showCodeField) {
|
||||
if (FieldValidation.validateSecretKey(secretKeyTextConrtroller.text)
|
||||
.isNotEmpty) {
|
||||
|
|
|
@ -36,12 +36,12 @@ class _NavigationHomeScreenState extends State<NavigationHomeScreen> {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
color: AppTheme.white,
|
||||
color: Colors.white,
|
||||
child: SafeArea(
|
||||
top: false,
|
||||
bottom: false,
|
||||
child: Scaffold(
|
||||
backgroundColor: AppTheme.nearlyWhite,
|
||||
backgroundColor: Colors.white,
|
||||
body: DrawerUserController(
|
||||
screenIndex: drawerIndex,
|
||||
drawerWidth: MediaQuery.of(context).size.width * 0.75,
|
||||
|
|
|
@ -19,8 +19,9 @@ class LoginProvider extends ChangeNotifier {
|
|||
String deviceId = 'Unknown';
|
||||
|
||||
init() {}
|
||||
Future<dynamic> verifyEmail(String email, String deviceid, String platform) {
|
||||
final response = ApiCall().verifyEmail(email, deviceid, platform);
|
||||
Future<dynamic> verifyEmail(
|
||||
String url, String email, String deviceid, String platform) {
|
||||
dynamic response = ApiCall().verifyEmail(url, email, deviceid, platform);
|
||||
loading = true;
|
||||
return response;
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ class _HomeDrawerState extends State<HomeDrawer> {
|
|||
});
|
||||
|
||||
_deviceid = _prefs.then((SharedPreferences prefs) {
|
||||
return prefs.getString('verfication_code') ?? "";
|
||||
return prefs.getString('deviceid') ?? "";
|
||||
});
|
||||
super.initState();
|
||||
}
|
||||
|
|
96
pubspec.lock
96
pubspec.lock
|
@ -189,10 +189,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: carousel_slider
|
||||
sha256: "9c695cc963bf1d04a47bd6021f68befce8970bcd61d24938e1fb0918cf5d9c42"
|
||||
sha256: "7b006ec356205054af5beaef62e2221160ea36b90fb70a35e4deacd49d0349ae"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.1"
|
||||
version: "5.0.0"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -253,10 +253,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: collection
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.18.0"
|
||||
version: "1.19.0"
|
||||
connectivity_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -285,10 +285,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: cross_file
|
||||
sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32"
|
||||
sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.4+1"
|
||||
version: "0.3.4+2"
|
||||
crypto:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -429,10 +429,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: file_picker
|
||||
sha256: "2ca051989f69d1b2ca012b2cf3ccf78c70d40144f0861ff2c063493f7c8c3d45"
|
||||
sha256: c2376a6aae82358a9f9ccdd7d1f4006d08faa39a2767cce01031d9f593a8bd3b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.0.5"
|
||||
version: "8.1.6"
|
||||
file_selector_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -477,18 +477,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_platform_interface
|
||||
sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63
|
||||
sha256: b94b217e3ad745e784960603d33d99471621ecca151c99c670869b76e50ad2a6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.0"
|
||||
version: "5.3.1"
|
||||
firebase_core_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_web
|
||||
sha256: "43d9e951ac52b87ae9cc38ecdcca1e8fa7b52a1dd26a96085ba41ce5108db8e9"
|
||||
sha256: "9e69806bb3d905aeec3c1242e0e1475de6ea6d48f456af29d598fb229a2b4e5e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.17.0"
|
||||
version: "2.18.2"
|
||||
firebase_remote_config:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -546,10 +546,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_carousel_widget
|
||||
sha256: "9476c39f1fcff57fb387a1a3c379a01f7c73eca4179ac1b41c07b7181fadec14"
|
||||
sha256: "6473e6df04bfafea70efd58251fe5945d5aa8d19461575c1b9d83643f08e0c77"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
version: "3.1.0"
|
||||
flutter_heatmap_calendar:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -689,7 +689,7 @@ packages:
|
|||
source: hosted
|
||||
version: "0.15.4"
|
||||
http:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: http
|
||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
||||
|
@ -748,10 +748,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_for_web
|
||||
sha256: "6a1704fdd75022272e7e7a897a9068e9c2ff3cd6a66820bf3ded810633eac954"
|
||||
sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.3"
|
||||
version: "3.0.6"
|
||||
image_picker_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -860,26 +860,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
||||
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.0"
|
||||
version: "10.0.7"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
||||
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "3.0.8"
|
||||
leak_tracker_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_testing
|
||||
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "3.0.1"
|
||||
logger:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -908,18 +908,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.0"
|
||||
version: "0.11.1"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.0"
|
||||
version: "1.15.0"
|
||||
mime:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1276,10 +1276,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_web
|
||||
sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a"
|
||||
sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
version: "2.2.1"
|
||||
shared_preferences_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1308,7 +1308,7 @@ packages:
|
|||
dependency: transitive
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.99"
|
||||
version: "0.0.0"
|
||||
sliver_tools:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1369,10 +1369,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: stack_trace
|
||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
version: "1.12.0"
|
||||
state_notifier:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1401,10 +1401,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: string_scanner
|
||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
version: "1.3.0"
|
||||
syncfusion_flutter_charts:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1457,10 +1457,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.1"
|
||||
version: "0.7.3"
|
||||
textfield_tags:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
|
@ -1553,10 +1553,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "3692a459204a33e04bc94f5fb91158faf4f2c8903281ddd82915adecdb1a901d"
|
||||
sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
version: "2.3.3"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1609,10 +1609,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "13.0.0"
|
||||
version: "14.3.0"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1625,26 +1625,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
|
||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.1"
|
||||
version: "1.1.0"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket_channel
|
||||
sha256: "1d8e795e2a8b3730c41b8a98a2dff2e0fb57ae6f0764a1c46ec5915387d257b2"
|
||||
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.4"
|
||||
version: "2.4.0"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: "0a989dc7ca2bb51eac91e8fd00851297cfffd641aa7538b165c62637ca0eaa4a"
|
||||
sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.4.0"
|
||||
version: "5.5.4"
|
||||
word_cloud:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1694,5 +1694,5 @@ packages:
|
|||
source: hosted
|
||||
version: "2.0.1"
|
||||
sdks:
|
||||
dart: ">=3.3.0 <4.0.0"
|
||||
flutter: ">=3.19.0"
|
||||
dart: ">=3.4.0 <4.0.0"
|
||||
flutter: ">=3.22.0"
|
||||
|
|
|
@ -66,7 +66,7 @@ dependencies:
|
|||
path_provider: ^2.1.3
|
||||
provider: ^6.1.2
|
||||
dropdown_button2: ^2.3.9
|
||||
file_picker: ^8.0.2
|
||||
file_picker: ^8.1.4
|
||||
permission_handler: ^11.3.1
|
||||
|
||||
connectivity_plus: ^6.0.3
|
||||
|
@ -82,8 +82,8 @@ dependencies:
|
|||
popover: ^0.3.0+1
|
||||
data_table_2: ^2.5.15
|
||||
expandable: ^5.0.1
|
||||
flutter_carousel_widget: ^2.2.0
|
||||
carousel_slider: ^4.2.1
|
||||
carousel_slider: ^5.0.0
|
||||
flutter_carousel_widget: ^3.1.0
|
||||
popup_menu: ^2.0.0
|
||||
adoptive_calendar: ^0.1.8
|
||||
multi_dropdown: ^2.1.4
|
||||
|
@ -95,6 +95,7 @@ dependencies:
|
|||
overlay_support: ^2.1.0
|
||||
flutter_svg_provider: ^1.0.7
|
||||
zoom_widget: ^2.0.1
|
||||
http: ^1.2.2
|
||||
|
||||
dev_dependencies:
|
||||
|
||||
|
|
Loading…
Reference in New Issue