login , logout,auth #8

Merged
snehalathad merged 1 commits from snehalatha_dev into dev 2024-12-18 04:40:15 +00:00
13 changed files with 254 additions and 199 deletions

2
.gitignore vendored
View File

@ -5,9 +5,11 @@
*.swp
.DS_Store
.atom/
.build/
.buildlog/
.history
.svn/
.swiftpm/
migrate_working_dir/
# IntelliJ related

View File

@ -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;

View File

@ -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;

View File

@ -260,9 +260,11 @@ Future main() async {
create: (_) => HiveDataRepository(
Hive.box<InteractionConfigData>('InteractionConfigDataBox'))),
],
child: SafeArea(
top: true,
child: MaterialApp(
child:
// SafeArea(
// top: true,
// child:
MaterialApp(
theme: ThemeData(
//fontFamily: "SourceSerif",
),
@ -292,7 +294,7 @@ Future main() async {
},
),
),
),
// ),
);
});
}

View File

@ -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}",
try {
// dio.options.contentType = Headers.multipartFormDataContentType;
// dio.options.baseUrl = "https://cardio-staging.konectar.io/";
// 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}',
}),
// 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");
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,13 +609,14 @@ class ApiCall {
"email_id": email,
"device_id": deviceid,
});
try {
response = await dio.post(
'${EventsConstants.loginUrl}${EventsConstants.getVerificationCode}',
'${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);
//Map<String, dynamic> jsondata = json.decode(response.data);
VerificationResponse verificationResponse =
verificationResponseFromJson(response.data);
return verificationResponse;
@ -615,6 +624,11 @@ class ApiCall {
print("isEmpty");
return null;
}
} catch (e) {
VerificationResponse verificationResponse =
VerificationResponse(status: 1401, message: "Invalid Domain");
return verificationResponse;
}
}
//VERIFY CODE OR LOGIN
@ -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,

View File

@ -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,

View File

@ -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';
}
}
}

View File

@ -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 {
if (textFieldsValidation(provider).isEmpty) {
setState(() {
print("loading");
provider.loading = true;
});
if (textFieldsValidation(provider).isEmpty) {
print("email:${emailTextController.text}");
// if (await _logout) {
// print("LOGOUT");
@ -341,9 +358,11 @@ 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);
if (resp != null) {
print("resp:${resp.status}");
if (resp.status == 1200 &&
@ -351,34 +370,45 @@ class _LoginScreenState extends State<LoginScreen> {
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;
_displaySnackBar("You have logged in successfully");
SnackBarWidget.displaySnackBar(
"You have logged in successfully", context);
_saveprefs(
resp.accessToken!,
resp.user?.email ?? emailTextController.text,
resp.user?.email ??
emailTextController.text,
secretKeyTextConrtroller.text,
deviceId!,
true)
.then((value) {
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (context) => NavigationHomeScreen()),
builder: (context) =>
NavigationHomeScreen()),
);
});
} else {
provider.loading = false;
provider.showCodeField = false;
provider.showMessage = true;
// provider.showMessage = true;
SnackBarWidget.displaySnackBar(
resp.message, context,
error: 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) {

View File

@ -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,

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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"

View File

@ -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: