From 8cce1351cacd02131b14dac4755b444d4af99ba3 Mon Sep 17 00:00:00 2001 From: Rajshinde046 Date: Mon, 8 Apr 2024 15:04:07 +0530 Subject: [PATCH] add details --- assets/images/png/Nointernet.png | Bin 0 -> 71981 bytes lib/Utils/Common/CustomTextFormField.dart | 8 +- lib/Utils/Common/noInternet.dart | 18 +- lib/Utils/api_urls.dart | 11 +- lib/Utils/base_manager.dart | 2 + lib/Utils/dialogs.dart | 31 ++ lib/data/network/network_api_services.dart | 18 +- lib/main.dart | 92 +-- lib/view/MainScreen/ExploreUnseen.dart | 62 +-- lib/view/login/AddDetails.dart | 307 +++++++---- lib/view/login/LoginScreen.dart | 583 +++++++++++--------- lib/view/login/VerifyOtp.dart | 79 ++- lib/view_model/Login/add_details_api.dart | 27 + lib/view_model/Login/send_otp_api.dart | 28 + lib/view_model/Login/verify_number_api.dart | 27 + pubspec.lock | 117 ++-- pubspec.yaml | 2 +- 17 files changed, 857 insertions(+), 555 deletions(-) create mode 100644 assets/images/png/Nointernet.png create mode 100644 lib/Utils/dialogs.dart create mode 100644 lib/view_model/Login/add_details_api.dart create mode 100644 lib/view_model/Login/send_otp_api.dart create mode 100644 lib/view_model/Login/verify_number_api.dart diff --git a/assets/images/png/Nointernet.png b/assets/images/png/Nointernet.png new file mode 100644 index 0000000000000000000000000000000000000000..90c31b34f8191e1a2d16a810b82a7500c7dfc9a7 GIT binary patch literal 71981 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%0DQe1ZdvTQ6k9K%#PVbjDnQSrh{RI+Qq;Xzu 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 { Widget build(BuildContext context) { return GlassmorphicContainer( width: double.infinity, - height: 50, + height: 50.h, borderRadius: 8, blur: 10, - alignment: Alignment.bottomCenter, + alignment: Alignment.center, border: 0.8, linearGradient: LinearGradient( begin: Alignment.topLeft, @@ -82,6 +82,7 @@ class _CustomTextFormFieldState extends State { ], ), child: TextFormField( + textAlignVertical: TextAlignVertical.center, cursorColor: Colors.red, initialValue: widget.value, readOnly: widget.readonly, @@ -127,7 +128,8 @@ class _CustomTextFormFieldState extends State { ? null : widget.suffixIcon!, border: InputBorder.none, - contentPadding: const EdgeInsets.symmetric(horizontal: 10), + contentPadding: + const EdgeInsets.symmetric(horizontal: 10, vertical: 20), ), style: const TextStyle(color: Colors.white), keyboardType: widget.texttype, diff --git a/lib/Utils/Common/noInternet.dart b/lib/Utils/Common/noInternet.dart index b931c95..536f873 100644 --- a/lib/Utils/Common/noInternet.dart +++ b/lib/Utils/Common/noInternet.dart @@ -1,6 +1,9 @@ +// ignore_for_file: file_names, sized_box_for_whitespace + import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:traderscircuit/Utils/Common/sized_box.dart'; +import 'package:traderscircuit/Utils/text.dart'; class NoInternet extends StatefulWidget { const NoInternet({super.key}); @@ -13,6 +16,7 @@ class _NoInternetState extends State { @override Widget build(BuildContext context) { return Scaffold( + backgroundColor: Colors.black, body: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: Container( @@ -22,15 +26,11 @@ class _NoInternetState extends State { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Text( - 'No Internet !', - style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20), - ), - sizedBoxHeight(15.h), - Text( - 'Please Check Your Internet\nConnection', - style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20), - ), + Image.asset('assets/images/png/Nointernet.png'), + // sizedBoxHeight(50.h), + // text18W800('No Internet !'), + // sizedBoxHeight(15.h), + // text15W600('Please Check Your Internet\nConnection') ], ), ), diff --git a/lib/Utils/api_urls.dart b/lib/Utils/api_urls.dart index c5ee233..0dc8680 100644 --- a/lib/Utils/api_urls.dart +++ b/lib/Utils/api_urls.dart @@ -1,6 +1,15 @@ class ApiUrls { //Base URL - static const base = "http://192.168.50.117/Trader_circuit/api/"; + static const base = "http://192.168.50.82/Trader_circuit/api/"; + + //send otp + static String sendOtp = "${base}sendOTP"; + + //verify otp + static String OTPVerify = "${base}OTPVerify"; + + //add details + static String AddDetails = "${base}userDetails"; // About API static String aboutUsApi = "${base}aboutUs"; diff --git a/lib/Utils/base_manager.dart b/lib/Utils/base_manager.dart index a8bae41..0e60b88 100644 --- a/lib/Utils/base_manager.dart +++ b/lib/Utils/base_manager.dart @@ -15,4 +15,6 @@ enum ResponseStatus { FAILED, PRIVATE, + + ERROR } diff --git a/lib/Utils/dialogs.dart b/lib/Utils/dialogs.dart new file mode 100644 index 0000000..c9991a3 --- /dev/null +++ b/lib/Utils/dialogs.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:get/get.dart'; + +class utils { + static showToast(String? msg) { + if (msg != null && msg != "null" && msg.isNotEmpty) { + Fluttertoast.showToast(msg: msg); + } + } + + static loader() { + Get.dialog( + Dialog( + elevation: 0, + backgroundColor: Colors.transparent, + child: WillPopScope( + child: const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircularProgressIndicator( + color: Colors.red, + ), + ], + ), + onWillPop: () async => false), + ), + barrierDismissible: false, + ); + } +} diff --git a/lib/data/network/network_api_services.dart b/lib/data/network/network_api_services.dart index 1427fdd..785672e 100644 --- a/lib/data/network/network_api_services.dart +++ b/lib/data/network/network_api_services.dart @@ -1,3 +1,4 @@ +import 'dart:convert'; import 'dart:developer'; import 'package:flutter/foundation.dart'; @@ -11,7 +12,9 @@ import 'base_api_services.dart'; class NetworkApiServices extends BaseApiServices { Dio dio = Dio(); - + String basicAuth = 'Basic ' + + base64.encode( + utf8.encode('traderCircuitUser:71%@L%es^bUX94`J9XT*@bh,._WWM{')); @override Future getApi(String url) async { if (kDebugMode) { @@ -19,7 +22,7 @@ class NetworkApiServices extends BaseApiServices { } Response response; SharedPreferences prefs = await SharedPreferences.getInstance(); - String? token = prefs.getString('token').toString(); + String? token = prefs.getString('accessToken').toString(); log(token); try { response = await dio.get( @@ -66,20 +69,19 @@ class NetworkApiServices extends BaseApiServices { Response response; SharedPreferences prefs = await SharedPreferences.getInstance(); - String? token = prefs.getString('token'); + String? token = prefs.getString('accessToken'); try { response = await dio.post(url, data: data, options: (token == null || token == "") ? Options( headers: { - "Authorization": - "Basic KzIkcVBiSlIzNncmaGUoalMmV0R6ZkpqdEVoSlVLVXA6dCRCZHEmSnQmc3Y0eUdqY0VVcTg5aEVZZHVSalhIMnU=", + "Authorization": basicAuth, }, ) : Options(headers: { - "Authorization": "Bearer $token", - //'access-token': token, + "Authorization": basicAuth, + 'access-token': token, })); } on Exception catch (e) { if (e is DioException) { @@ -121,7 +123,7 @@ class NetworkApiServices extends BaseApiServices { } Response response; SharedPreferences prefs = await SharedPreferences.getInstance(); - String? token = prefs.getString('token').toString(); + String? token = prefs.getString('accessToken').toString(); log(token); try { response = await dio.delete(url, diff --git a/lib/main.dart b/lib/main.dart index 85af04a..f56d010 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -45,59 +45,59 @@ class _MyAppState extends State with WidgetsBindingObserver { late StreamSubscription subscription; Connectivity connectivity = Connectivity(); - // @override - // void initState() { - // super.initState(); - // WidgetsBinding.instance.addObserver(this); + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addObserver(this); - // connectivity = Connectivity(); - // checkInternet(); - // subscription = - // connectivity.onConnectivityChanged.listen((ConnectivityResult result) { - // _connectionStatus = result.toString(); - // if (result == ConnectivityResult.wifi || - // result == ConnectivityResult.mobile) { - // setState(() { - // _connectionStatus = result.toString(); + connectivity = Connectivity(); + checkInternet(); + subscription = + connectivity.onConnectivityChanged.listen((ConnectivityResult result) { + _connectionStatus = result.toString(); + if (result == ConnectivityResult.wifi || + result == ConnectivityResult.mobile) { + setState(() { + _connectionStatus = result.toString(); - // Get.back(result: true); - // }); - // } else { - // setState(() { - // _connectionStatus = result.toString(); - // Get.toNamed(RouteName.nointernet); - // }); - // } - // }); - // // print(_connectionStatus); - // } + Get.back(result: true); + }); + } else { + setState(() { + _connectionStatus = result.toString(); + Get.toNamed(RouteName.nointernet); + }); + } + }); + // print(_connectionStatus); + } - // Future checkInternet() async { - // final connectivityResult = await (Connectivity().checkConnectivity()); + Future checkInternet() async { + final connectivityResult = await (Connectivity().checkConnectivity()); - // if (connectivityResult == ConnectivityResult.wifi || - // connectivityResult == ConnectivityResult.mobile) { - // setState(() { - // _connectionStatus = connectivityResult.toString(); - // }); - // } else { - // setState(() { - // _connectionStatus = connectivityResult.toString(); - // print(_connectionStatus.toString()); - // Get.toNamed(RouteName.nointernet); + if (connectivityResult == ConnectivityResult.wifi || + connectivityResult == ConnectivityResult.mobile) { + setState(() { + _connectionStatus = connectivityResult.toString(); + }); + } else { + setState(() { + _connectionStatus = connectivityResult.toString(); + print(_connectionStatus.toString()); + Get.toNamed(RouteName.nointernet); - // // Navigator.pushReplacementNamed(context, "/noInternet"); - // }); - // } - // } + // Navigator.pushReplacementNamed(context, "/noInternet"); + }); + } + } - // @override - // void dispose() { - // super.dispose(); - // WidgetsBinding.instance.removeObserver(this); + @override + void dispose() { + super.dispose(); + WidgetsBinding.instance.removeObserver(this); - // subscription.cancel(); - // } + subscription.cancel(); + } // This widget is the root of your application. @override diff --git a/lib/view/MainScreen/ExploreUnseen.dart b/lib/view/MainScreen/ExploreUnseen.dart index 387302c..4bb377a 100644 --- a/lib/view/MainScreen/ExploreUnseen.dart +++ b/lib/view/MainScreen/ExploreUnseen.dart @@ -62,23 +62,10 @@ class _ExploreUnseenState extends State { child: ListView(physics: BouncingScrollPhysics(), children: [ text22W600('Explore The Unseen'), sizedBoxHeight(35.h), - DefaultTabController( - length: 2, - initialIndex: 1, - child: Column( - children: [ - MyTabBar(), - SizedBox( - height: 700.h, - child: TabBarView( - children: [ - ActiveCallsTab(), - ExitedCallsTab(), - ], - ), - ), - ], - ), + Column( + children: [ + ActiveCallsTab(), + ], ), ])) ]) @@ -176,47 +163,6 @@ class _ExploreUnseenState extends State { ); } - Widget ExitedCallsTab() { - List> cardcall = [ - { - 'text': 'Trident Ltd', - 'amount': '₹ 453 - ₹234', - 'pdfname': 'Download Pdf', - }, - { - 'text': 'Trident Ltd', - 'amount': '₹ 453 - ₹234', - 'pdfname': 'Download Pdf', - }, - { - 'text': 'Trident Ltd', - 'amount': '₹ 453 - ₹234', - 'pdfname': 'Download Pdf', - }, - ]; - - return SingleChildScrollView( - child: Column( - children: [ - sizedBoxHeight(25.h), - Column( - children: List.generate(cardcall.length, (index) { - return Column( - children: [ - cardcallWidget( - text: cardcall[index]['text']!, - amount: cardcall[index]['amount']!, - pdfname: cardcall[index]['pdfname']!), - sizedBoxHeight(20.h) - ], - ); - }), - ), - ], - ), - ); - } - Widget cardcallWidget( {required String text, required String amount, required String pdfname}) { return commonGlassContainer( diff --git a/lib/view/login/AddDetails.dart b/lib/view/login/AddDetails.dart index 225ee81..b024933 100644 --- a/lib/view/login/AddDetails.dart +++ b/lib/view/login/AddDetails.dart @@ -3,12 +3,16 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:traderscircuit/Utils/Common/CommonAppbar.dart'; import 'package:traderscircuit/Utils/Common/CustomTextFormField.dart'; import 'package:traderscircuit/Utils/Common/commonBotton.dart'; +import 'package:traderscircuit/Utils/base_manager.dart'; import 'package:traderscircuit/Utils/text.dart'; +import 'package:traderscircuit/Utils/utils.dart'; import 'package:traderscircuit/resources/routes/route_name.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; +import 'package:traderscircuit/view_model/Login/add_details_api.dart'; class AddDetails extends StatefulWidget { const AddDetails({super.key}); @@ -18,7 +22,12 @@ class AddDetails extends StatefulWidget { } class _AddDetailsState extends State { + final GlobalKey _adddetailsform = GlobalKey(); TextEditingController pincode = TextEditingController(); + TextEditingController fullName = TextEditingController(); + TextEditingController email = TextEditingController(); + TextEditingController phone = TextEditingController(); + TextEditingController city = TextEditingController(); TextEditingController dobcontroller = TextEditingController(); Color primaryColor = Colors.transparent.withOpacity(0.2); Color secondaryColor = Colors.grey.shade800; @@ -69,6 +78,53 @@ class _AddDetailsState extends State { } } + _addDetails() async { + final isValid = _adddetailsform.currentState?.validate(); + if (isValid!) { + Utils.loader(); + Map updata = { + "full_name": fullName.text, + "email_address": email.text, + "mobile_number": phone.text, + "date_of_birth": dobcontroller.text, + "city": city.text, + "whatsapp_update": isSwitched == false ? 0 : 1, + }; + final resp = await AddDetailsAPI(updata).adddetailsApi(); + if (resp.status == ResponseStatus.SUCCESS) { + Get.back(); + Get.toNamed(RouteName.kyc); + // SharedPreferences prefs = await SharedPreferences.getInstance(); + // await prefs.setString('accessToken', resp.data["data"]["access-token"]); + // await prefs.setString('productType', + // resp.data["data"]["nature_of_business_id"].toString()); + // naturebusiness = + // resp.data["data"]["nature_of_business_id"].toString(); + + // ProfileApi().GetProfileApi().then( + // (value) { + + // Get.toNamed(RouteName.mainscreen); + // }, + // ); + + // Get.to(() => CustomBottomBar(pageIndex: 0)); + } else if (resp.status == ResponseStatus.PRIVATE) { + Get.back(); + String? message = resp.data['message']; + Utils.showToast("$message"); + } else if (resp.status == ResponseStatus.ERROR) { + Get.back(); + String? message = resp.data['message']; + Utils.showToast("$message"); + } else { + Get.back(); + String? message = resp.data['message']; + Utils.showToast("$message"); + } + } + } + @override Widget build(BuildContext context) { return Scaffold( @@ -83,129 +139,140 @@ class _AddDetailsState extends State { children: [ Padding( padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16), - child: ListView( - physics: BouncingScrollPhysics(), - // mainAxisAlignment: MainAxisAlignment.start, - // crossAxisAlignment: CrossAxisAlignment.start, + child: Form( + key: _adddetailsform, + child: ListView( + physics: BouncingScrollPhysics(), + // mainAxisAlignment: MainAxisAlignment.start, + // crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - text18W400("Full Name"), - ], - ), - SizedBox( - height: 15.h, - ), - CustomTextFormField(), - SizedBox( - height: 30.h, - ), - Row( - children: [ - text18W400("Email Address"), - ], - ), - SizedBox( - height: 15.h, - ), - CustomTextFormField( - texttype: TextInputType.emailAddress, - ), - SizedBox( - height: 30.h, - ), - Row( - children: [ - text18W400("Phone Number"), - ], - ), - SizedBox( - height: 15.h, - ), - CustomTextFormField( - texttype: TextInputType.phone, - ), - SizedBox( - height: 30.h, - ), - Row( - children: [ - text18W400("Date Of Birth"), - ], - ), - SizedBox( - height: 15.h, - ), - CustomTextFormField( - suffixIcon: Icon( - Icons.calendar_month_outlined, - color: Colors.white, + children: [ + Row( + children: [ + text18W400("Full Name"), + ], ), - readonly: true, - onTap: () { - _selectDate(context); - }, - ), - SizedBox( - height: 30.h, - ), - Row( - children: [ - text18W400("City"), - ], - ), - SizedBox( - height: 15.h, - ), - CustomTextFormField(), - SizedBox( - height: 40.h, - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Image.asset( - "assets/images/png/whatsapp.png", - height: 34.h, - width: 34.w, - ), - SizedBox( - width: 10.w, - ), - text18W600("Get Updates on WhatsApp"), - ], + SizedBox( + height: 15.h, + ), + CustomTextFormField( + textEditingController: fullName, + ), + SizedBox( + height: 30.h, + ), + Row( + children: [ + text18W400("Email Address"), + ], + ), + SizedBox( + height: 15.h, + ), + CustomTextFormField( + textEditingController: email, + texttype: TextInputType.emailAddress, + ), + SizedBox( + height: 30.h, + ), + Row( + children: [ + text18W400("Phone Number"), + ], + ), + SizedBox( + height: 15.h, + ), + CustomTextFormField( + textEditingController: phone, + texttype: TextInputType.phone, + ), + SizedBox( + height: 30.h, + ), + Row( + children: [ + text18W400("Date Of Birth"), + ], + ), + SizedBox( + height: 15.h, + ), + CustomTextFormField( + textEditingController: dobcontroller, + suffixIcon: Icon( + Icons.calendar_month_outlined, + color: Colors.white, ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Switch( - value: isSwitched, - onChanged: _toggleSwitch, - activeTrackColor: Colors.green, - activeColor: Colors.white, - inactiveTrackColor: Colors.white, - inactiveThumbColor: Colors.black, - ), - ], - ), - ], - ), - SizedBox( - height: 70.h, - ), - CommonBtn( - text: "Next", - onTap: () { - Get.toNamed(RouteName.kyc); - }, - ), - SizedBox( - height: 10.h, - ), - ], + readonly: true, + onTap: () { + _selectDate(context); + }, + ), + SizedBox( + height: 30.h, + ), + Row( + children: [ + text18W400("City"), + ], + ), + SizedBox( + height: 15.h, + ), + CustomTextFormField( + textEditingController: city, + ), + SizedBox( + height: 40.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Image.asset( + "assets/images/png/whatsapp.png", + height: 34.h, + width: 34.w, + ), + SizedBox( + width: 10.w, + ), + text18W600("Get Updates on WhatsApp"), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Switch( + value: isSwitched, + onChanged: _toggleSwitch, + activeTrackColor: Colors.green, + activeColor: Colors.white, + inactiveTrackColor: Colors.white, + inactiveThumbColor: Colors.black, + ), + ], + ), + ], + ), + SizedBox( + height: 70.h, + ), + CommonBtn( + text: "Next", + onTap: () { + _addDetails(); + // Get.toNamed(RouteName.kyc); + }, + ), + SizedBox( + height: 10.h, + ), + ], + ), ), ), ], diff --git a/lib/view/login/LoginScreen.dart b/lib/view/login/LoginScreen.dart index 4622fe0..7345b86 100644 --- a/lib/view/login/LoginScreen.dart +++ b/lib/view/login/LoginScreen.dart @@ -7,9 +7,13 @@ import 'package:get/get.dart'; import 'package:glassmorphism/glassmorphism.dart'; import 'package:traderscircuit/Utils/Common/CustomTextFormField.dart'; import 'package:traderscircuit/Utils/Common/commonBotton.dart'; +import 'package:traderscircuit/Utils/base_manager.dart'; import 'package:traderscircuit/Utils/text.dart'; +import 'package:traderscircuit/Utils/utils.dart'; import 'package:traderscircuit/resources/routes/route_name.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; +import 'package:traderscircuit/view_model/Login/send_otp_api.dart'; +import 'package:traderscircuit/Utils/Dialogs.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); @@ -19,6 +23,7 @@ class LoginScreen extends StatefulWidget { } class _LoginScreenState extends State { + final GlobalKey _sendotpform = GlobalKey(); TextEditingController phonecontroller = TextEditingController(); bool isValidPhoneNumber(String phoneNumber) { final RegExp phoneNumberExpression = RegExp(r"^0{10}$"); @@ -40,289 +45,329 @@ class _LoginScreenState extends State { Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), - child: ListView( - physics: const BouncingScrollPhysics(), - // mainAxisAlignment: MainAxisAlignment.start, - // crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox( - height: 20.h, - ), - const Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - "Traders Circuit", - style: TextStyle( - fontFamily: 'hiragino', - color: Colors.white, - fontSize: 25, - fontWeight: FontWeight.w600), - ), - ], - ), - SizedBox( - height: 42.h, - ), - const Text( - "Lets get started ", - style: TextStyle( - fontFamily: 'hiragino', - color: Colors.white, - fontSize: 24, - fontWeight: FontWeight.w700), - ), - SizedBox( - height: 10.h, - ), - text18W800("Enter your mobile number to get otp"), - SizedBox( - height: 35.h, - ), - Row( - children: [ - Expanded( - child: GlassmorphicContainer( - width: 60, - height: 50, - borderRadius: 8, - blur: 10, - alignment: Alignment.center, - border: 0.8, - linearGradient: LinearGradient( + child: Form( + key: _sendotpform, + child: ListView( + physics: const BouncingScrollPhysics(), + // mainAxisAlignment: MainAxisAlignment.start, + // crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 20.h, + ), + const Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Traders Circuit", + style: TextStyle( + fontFamily: 'hiragino', + color: Colors.white, + fontSize: 25, + fontWeight: FontWeight.w600), + ), + ], + ), + SizedBox( + height: 42.h, + ), + const Text( + "Lets get started ", + style: TextStyle( + fontFamily: 'hiragino', + color: Colors.white, + fontSize: 24, + fontWeight: FontWeight.w700), + ), + SizedBox( + height: 10.h, + ), + text18W800("Enter your mobile number to get otp"), + SizedBox( + height: 35.h, + ), + Row( + children: [ + Expanded( + child: GlassmorphicContainer( + width: 60, + height: 50, + borderRadius: 8, + blur: 10, + alignment: Alignment.center, + border: 0.8, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Colors.white.withOpacity(0.1), + const Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: const [ + 0.1, + 1, + ]), + borderGradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ - Colors.white.withOpacity(0.1), - const Color(0xFFFFFFFF).withOpacity(0.05), + const Color(0xff9A0000).withOpacity(0.5), + const Color(0xFFffffff).withOpacity(0.5), ], - stops: const [ - 0.1, - 1, - ]), - borderGradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [ - const Color(0xff9A0000).withOpacity(0.5), - const Color(0xFFffffff).withOpacity(0.5), - ], - ), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - // SvgPicture.asset("assets/images/svg/india.svg"), - Image.asset( - "assets/images/png/india.png", - height: 25.h, - width: 25.h, - ), - const SizedBox( - width: 2, - ), - const Text( - "+91", - style: TextStyle( - fontFamily: 'hiragino', - fontSize: 15, - color: Colors.white, + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // SvgPicture.asset("assets/images/svg/india.svg"), + Image.asset( + "assets/images/png/india.png", + height: 25.h, + width: 25.h, ), - ) - ], + const SizedBox( + width: 2, + ), + const Text( + "+91", + style: TextStyle( + fontFamily: 'hiragino', + fontSize: 15, + color: Colors.white, + ), + ) + ], + ), ), ), - ), - const SizedBox( - width: 10, - ), - SizedBox( - width: 285.w, - child: CustomTextFormField( - texttype: TextInputType.phone, - textEditingController: phonecontroller, - // validator: (value) { - // if (value.isEmpty) { - // return 'Enter your phone number'; - // } else if (!RegExp(r'(^(?:[+0]9)?[0-9]{10}$)') - // .hasMatch(value)) { - // return 'Enter a valid phone number'; - // } else if (!isValidPhoneNumber(value)) { - // return 'Phone number cannot contain 10 zeros'; - // } - // return null; - // }, - inputFormatters: [ - LengthLimitingTextInputFormatter(10), - FilteringTextInputFormatter.allow( - RegExp('[0-9]')), + const SizedBox( + width: 10, + ), + SizedBox( + width: 285.w, + child: CustomTextFormField( + texttype: TextInputType.phone, + textEditingController: phonecontroller, + // validator: (value) { + // if (value.isEmpty) { + // return 'Enter your phone number'; + // } else if (!RegExp(r'(^(?:[+0]9)?[0-9]{10}$)') + // .hasMatch(value)) { + // return 'Enter a valid phone number'; + // } else if (!isValidPhoneNumber(value)) { + // return 'Phone number cannot contain 10 zeros'; + // } + // return null; + // }, + inputFormatters: [ + LengthLimitingTextInputFormatter(10), + FilteringTextInputFormatter.allow( + RegExp('[0-9]')), + ], + ), + ) + ], + ), + const SizedBox( + height: 10, + ), + text14W300( + "We’ll send six digit code to the registered number. Standard data rates may apply"), + SizedBox( + height: 65.h, + ), + CommonBtn( + text: "Login/Signup", + onTap: () async { + final isValid = + _sendotpform.currentState?.validate(); + if (isValid!) { + utils.loader(); + FocusManager.instance.primaryFocus?.unfocus(); + + Map myLoginData = { + "mobile_number": phonecontroller.text, + }; + + var resp = + await SendOtpAPI(myLoginData).sendOtpApi(); + print(resp.status); + print('Api msg : ${resp.message}'); + + if (resp.status == ResponseStatus.SUCCESS) { + Get.back(); + print("api response is ${resp.data}"); + Utils.showToast("OTP sent successfully"); + + Map res = resp.data; + print(res); + + Get.toNamed(RouteName.verifyotp, arguments: { + "phonenumber": phonecontroller.text + }); + } else { + Get.back(); + Utils.showToast(resp.message); + print('Api msg : ${resp.message}'); + } + } else { + Get.snackbar( + "Error", "Please Enter Login Credentials", + margin: EdgeInsets.all(8), + snackStyle: SnackStyle.FLOATING, + snackPosition: SnackPosition.BOTTOM); + } + }), + SizedBox( + height: 10.h, + ), + text14W300( + "By continuing, you agree to our Terms & Conditions"), + SizedBox( + height: 45.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + height: 0.2.h, + width: 108.w, + color: Colors.white, + ), + SizedBox( + width: 22.w, + ), + text18W600("OR"), + SizedBox( + width: 22.w, + ), + Container( + height: 0.2.h, + width: 108.w, + color: Colors.white, + ), + ], + ), + SizedBox( + height: 40.h, + ), + GlassmorphicContainer( + width: double.infinity, + height: 55.h, + borderRadius: 8, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xFFffffff).withOpacity(0.1), + const Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: const [ + 0.1, + 1, + ]), + border: 0.3, + blur: 10, + borderGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xFFAF2E89).withOpacity(0.2), + const Color(0xFFA23E31).withOpacity(0.2), + const Color(0xFF0000).withOpacity(0.2), + ], + stops: const [ + 0.3, + 0.6, + 1, + ]), + child: Center( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + "assets/images/png/apple.png", + height: 30.h, + width: 30.w, + ), + SizedBox( + width: 7.h, + ), + text16W400("Continue with apple"), ], ), - ) - ], - ), - const SizedBox( - height: 10, - ), - text14W300( - "We’ll send six digit code to the registered number. Standard data rates may apply"), - SizedBox( - height: 65.h, - ), - CommonBtn( - text: "Login/Signup", - onTap: () { - Get.toNamed(RouteName.verifyotp); - }), - SizedBox( - height: 10.h, - ), - text14W300( - "By continuing, you agree to our Terms & Conditions"), - SizedBox( - height: 45.h, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - height: 0.2.h, - width: 108.w, - color: Colors.white, - ), - SizedBox( - width: 22.w, - ), - text18W600("OR"), - SizedBox( - width: 22.w, - ), - Container( - height: 0.2.h, - width: 108.w, - color: Colors.white, - ), - ], - ), - SizedBox( - height: 40.h, - ), - GlassmorphicContainer( - width: double.infinity, - height: 55.h, - borderRadius: 8, - linearGradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [ - const Color(0xFFffffff).withOpacity(0.1), - const Color(0xFFFFFFFF).withOpacity(0.05), - ], - stops: const [ - 0.1, - 1, - ]), - border: 0.3, - blur: 10, - borderGradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [ - const Color(0xFFAF2E89).withOpacity(0.2), - const Color(0xFFA23E31).withOpacity(0.2), - const Color(0xFF0000).withOpacity(0.2), - ], - stops: const [ - 0.3, - 0.6, - 1, - ]), - child: Center( - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - "assets/images/png/apple.png", - height: 30.h, - width: 30.w, - ), - SizedBox( - width: 7.h, - ), - text16W400("Continue with apple"), - ], ), ), - ), - SizedBox( - height: 15.h, - ), - GlassmorphicContainer( - width: double.infinity, - height: 55.h, - borderRadius: 8, - linearGradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [ - const Color(0xFFffffff).withOpacity(0.1), - const Color(0xFFFFFFFF).withOpacity(0.05), - ], - stops: const [ - 0.1, - 1, - ]), - border: 0.5, - blur: 10, - borderGradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [ - const Color(0xFFAF2E89).withOpacity(0.2), - const Color(0xFFA23E31).withOpacity(0.2), - const Color(0xFF0000).withOpacity(0.2), - ], - stops: const [ - 0.3, - 0.6, - 1, - ]), - child: Center( - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - "assets/images/png/google.png", - height: 30.h, - width: 30.w, - ), - SizedBox( - width: 7.h, - ), - text16W400( - "Continue with google", - ), - ], - ), + SizedBox( + height: 15.h, ), - ), - SizedBox( - height: 45.h, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - InkWell( - onTap: () { - Get.toNamed(RouteName.mainscreen); - }, - child: text16W700( - "Continue as guest", + GlassmorphicContainer( + width: double.infinity, + height: 55.h, + borderRadius: 8, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xFFffffff).withOpacity(0.1), + const Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: const [ + 0.1, + 1, + ]), + border: 0.5, + blur: 10, + borderGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xFFAF2E89).withOpacity(0.2), + const Color(0xFFA23E31).withOpacity(0.2), + const Color(0xFF0000).withOpacity(0.2), + ], + stops: const [ + 0.3, + 0.6, + 1, + ]), + child: Center( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + "assets/images/png/google.png", + height: 30.h, + width: 30.w, + ), + SizedBox( + width: 7.h, + ), + text16W400( + "Continue with google", + ), + ], ), ), - ], - ) - ], + ), + SizedBox( + height: 45.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + InkWell( + onTap: () { + Get.toNamed(RouteName.mainscreen); + }, + child: text16W700( + "Continue as guest", + ), + ), + ], + ) + ], + ), ), ), ], diff --git a/lib/view/login/VerifyOtp.dart b/lib/view/login/VerifyOtp.dart index da0d00a..b697264 100644 --- a/lib/view/login/VerifyOtp.dart +++ b/lib/view/login/VerifyOtp.dart @@ -3,11 +3,20 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:pin_code_fields/pin_code_fields.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:traderscircuit/Utils/Common/CommonAppbar.dart'; import 'package:traderscircuit/Utils/Common/commonBotton.dart'; +import 'package:traderscircuit/Utils/base_manager.dart'; import 'package:traderscircuit/Utils/text.dart'; +import 'package:traderscircuit/Utils/utils.dart'; import 'package:traderscircuit/resources/routes/route_name.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; +import 'package:traderscircuit/view_model/Login/verify_number_api.dart'; + +bool? isVendorExist; +int? isProfileUpdated; +int? isriskProfileUpdated; +int? isKycUpdated; class VerifyOTP extends StatefulWidget { const VerifyOTP({super.key}); @@ -21,6 +30,73 @@ class _VerifyOTPState extends State { TextEditingController pincode = TextEditingController(); Color primaryColor = Colors.transparent.withOpacity(0.2); Color secondaryColor = Colors.grey.shade800; + String? phonenumber; + + @override + void initState() { + super.initState(); + phonenumber = Get.arguments["phonenumber"]; + } + + _verifycheck() async { + final isValid = _otpform.currentState?.validate(); + if (isValid!) { + Utils.loader(); + Map updata = { + "mobile_number": phonenumber.toString(), + "otp": pincode.text, + }; + final resp = await VerifyNumberAPI(updata).verifynumberApi(); + if (resp.status == ResponseStatus.SUCCESS) { + Get.back(); + isVendorExist = resp.data["data"]["vendor_account_exist"]; + isProfileUpdated = resp.data["data"]["user_data"]["profile_updated"]; + isriskProfileUpdated = + resp.data["data"]["user_data"]["risk_profile_updated"]; + isKycUpdated = resp.data["data"]["user_data"]["kyc_updated"]; + if (isVendorExist!) { + SharedPreferences prefs = await SharedPreferences.getInstance(); + await prefs.setString( + 'accessToken', resp.data["data"]["access-token"]); + // await prefs.setString('productType', + // resp.data["data"]["nature_of_business_id"].toString()); + // naturebusiness = + // resp.data["data"]["nature_of_business_id"].toString(); + + // ProfileApi().GetProfileApi().then( + // (value) { + + isProfileUpdated == 0 + ? Get.toNamed(RouteName.adddetails) + : isKycUpdated == 0 + ? Get.toNamed(RouteName.kyc) + : isriskProfileUpdated == 0 + ? Get.toNamed(RouteName.updateriskprofile) + : Get.toNamed(RouteName.mainscreen); + // Get.toNamed(RouteName.mainscreen); + // }, + // ); + + // Get.to(() => CustomBottomBar(pageIndex: 0)); + } else { + Get.toNamed(RouteName.loginscreen); + } + } else if (resp.status == ResponseStatus.PRIVATE) { + Get.back(); + String? message = resp.data['message']; + Utils.showToast("$message"); + } else if (resp.status == ResponseStatus.ERROR) { + Get.back(); + String? message = resp.data['message']; + Utils.showToast("$message"); + } else { + Get.back(); + String? message = resp.data['message']; + Utils.showToast("$message"); + } + } + } + @override Widget build(BuildContext context) { return Scaffold( @@ -113,7 +189,8 @@ class _VerifyOTPState extends State { CommonBtn( text: "Verify OTP", onTap: () { - Get.toNamed(RouteName.secureaccess); + _verifycheck(); + // Get.toNamed(RouteName.secureaccess); }, ) ], diff --git a/lib/view_model/Login/add_details_api.dart b/lib/view_model/Login/add_details_api.dart new file mode 100644 index 0000000..4f1c4fc --- /dev/null +++ b/lib/view_model/Login/add_details_api.dart @@ -0,0 +1,27 @@ +import 'package:traderscircuit/Utils/api_urls.dart'; +import 'package:traderscircuit/Utils/base_manager.dart'; +import 'package:traderscircuit/data/network/network_api_services.dart'; + +class AddDetailsAPI { + AddDetailsAPI(this.data); + var data; + Future> adddetailsApi() async { + final response = await NetworkApiServices().postApi( + // optionalpar: true, + data, + ApiUrls.AddDetails, + ); + + if (response.status == ResponseStatus.SUCCESS) { + Map responseData = + Map.from(response.data); + if (responseData['status'] == "success") { + print("token is $response"); + } else { + return ResponseData( + responseData['message'], ResponseStatus.FAILED); + } + } + return response; + } +} diff --git a/lib/view_model/Login/send_otp_api.dart b/lib/view_model/Login/send_otp_api.dart new file mode 100644 index 0000000..1a1c9f5 --- /dev/null +++ b/lib/view_model/Login/send_otp_api.dart @@ -0,0 +1,28 @@ +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:traderscircuit/Utils/api_urls.dart'; +import 'package:traderscircuit/Utils/base_manager.dart'; +import 'package:traderscircuit/data/network/network_api_services.dart'; + +class SendOtpAPI { + SendOtpAPI(this.data); + var data; + Future> sendOtpApi() async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + final response = await NetworkApiServices().postApi( + data, + ApiUrls.sendOtp, + ); + + if (response.status == ResponseStatus.SUCCESS) { + Map responseData = + Map.from(response.data); + if (responseData['status'] == "success") { + print("OTP sent successfully"); + } else { + return ResponseData( + responseData['message'], ResponseStatus.FAILED); + } + } + return response; + } +} diff --git a/lib/view_model/Login/verify_number_api.dart b/lib/view_model/Login/verify_number_api.dart new file mode 100644 index 0000000..527ac54 --- /dev/null +++ b/lib/view_model/Login/verify_number_api.dart @@ -0,0 +1,27 @@ +import 'package:traderscircuit/Utils/api_urls.dart'; +import 'package:traderscircuit/Utils/base_manager.dart'; +import 'package:traderscircuit/data/network/network_api_services.dart'; + +class VerifyNumberAPI { + VerifyNumberAPI(this.data); + var data; + Future> verifynumberApi() async { + final response = await NetworkApiServices().postApi( + // optionalpar: true, + data, + ApiUrls.OTPVerify, + ); + + if (response.status == ResponseStatus.SUCCESS) { + Map responseData = + Map.from(response.data); + if (responseData['status'] == "success") { + print("token is $response"); + } else { + return ResponseData( + responseData['message'], ResponseStatus.FAILED); + } + } + return response; + } +} diff --git a/pubspec.lock b/pubspec.lock index ba2db02..5b43aac 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -93,10 +93,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.18.0" connectivity_plus: dependency: "direct main" description: @@ -286,7 +286,14 @@ packages: description: flutter source: sdk version: "0.0.0" - + flutter_branch_sdk: + dependency: transitive + description: + name: flutter_branch_sdk + sha256: "3850097e5c70d89db235fb160e92eac5928f4206ab167b0d83c7e4e50b1357f8" + url: "https://pub.dev" + source: hosted + version: "7.1.0" flutter_cache_manager: dependency: transitive description: @@ -295,7 +302,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.3.1" - + flutter_isolate: + dependency: transitive + description: + name: flutter_isolate + sha256: "8ab879634322a012feb096153cf759caa118d81300189d1730455f3718bca24b" + url: "https://pub.dev" + source: hosted + version: "2.0.5-pre" flutter_lints: dependency: "direct dev" description: @@ -542,10 +556,10 @@ packages: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" mime: dependency: transitive description: @@ -570,7 +584,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.0" - octo_image: dependency: transitive description: @@ -587,23 +600,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.5.3" - package_info_plus: - dependency: transitive - description: - name: package_info_plus - sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017" - url: "https://pub.dev" - source: hosted - version: "4.2.0" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - path: dependency: transitive description: @@ -724,7 +720,6 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.2" - rxdart: dependency: transitive description: @@ -733,7 +728,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.27.7" - + share_plus: + dependency: transitive + description: + name: share_plus + sha256: b1f15232d41e9701ab2f04181f21610c36c83a12ae426b79b4bd011c567934b1 + url: "https://pub.dev" + source: hosted + version: "6.3.4" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: "251eb156a8b5fa9ce033747d73535bf53911071f8d3b6f4f0b578505ce0d4496" + url: "https://pub.dev" + source: hosted + version: "3.4.0" shared_preferences: dependency: "direct main" description: @@ -831,18 +841,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -871,10 +881,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.1" typed_data: dependency: transitive description: @@ -883,17 +893,46 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.2" - + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 + url: "https://pub.dev" + source: hosted + version: "3.1.1" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b + url: "https://pub.dev" + source: hosted + version: "2.2.3" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 + url: "https://pub.dev" + source: hosted + version: "3.1.1" uuid: dependency: transitive description: name: uuid - sha256: "22c94e5ad1e75f9934b766b53c742572ee2677c56bc871d850a57dad0f82127f" url: "https://pub.dev" source: hosted version: "4.2.2" - vector_graphics: dependency: transitive description: @@ -1019,10 +1058,10 @@ packages: dependency: transitive description: name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 url: "https://pub.dev" source: hosted - version: "0.1.4-beta" + version: "0.3.0" win32: dependency: transitive description: @@ -1048,5 +1087,5 @@ packages: source: hosted version: "6.3.0" sdks: - dart: ">=3.1.0 <4.0.0" - flutter: ">=3.13.0" + dart: ">=3.2.0 <4.0.0" + flutter: ">=3.16.0" diff --git a/pubspec.yaml b/pubspec.yaml index 8173376..8dd0737 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -63,4 +63,4 @@ flutter: - family: hiragino fonts: - - asset: assets/fonts/hiragino/Hiragino Sans GB W6.TTF + - asset: assets/fonts/hiragino/HiraginoInterface.ttc