feat: refactoring and tidy up code and add google_ml_kit
This commit is contained in:
parent
63ba97382b
commit
972de38377
15
.metadata
15
.metadata
|
@ -18,21 +18,6 @@ migration:
|
||||||
- platform: android
|
- platform: android
|
||||||
create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
||||||
base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
||||||
- platform: ios
|
|
||||||
create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
- platform: linux
|
|
||||||
create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
- platform: macos
|
|
||||||
create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
- platform: web
|
|
||||||
create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
- platform: windows
|
|
||||||
create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf
|
|
||||||
|
|
||||||
# User provided section
|
# User provided section
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
import 'package:rijig_mobile/core/utils/exportimportview.dart';
|
import 'package:rijig_mobile/core/utils/exportimportview.dart';
|
||||||
|
import 'package:rijig_mobile/features/auth/presentation/screen/collector/clogin_screen.dart';
|
||||||
|
import 'package:rijig_mobile/features/auth/presentation/screen/collector/welcome_collector_screen.dart';
|
||||||
|
|
||||||
final router = GoRouter(
|
final router = GoRouter(
|
||||||
routes: [
|
routes: [
|
||||||
|
@ -8,6 +10,8 @@ final router = GoRouter(
|
||||||
builder: (context, state) => OnboardingPageScreen(),
|
builder: (context, state) => OnboardingPageScreen(),
|
||||||
),
|
),
|
||||||
GoRoute(path: '/login', builder: (context, state) => LoginScreen()),
|
GoRoute(path: '/login', builder: (context, state) => LoginScreen()),
|
||||||
|
GoRoute(path: '/clogin', builder: (context, state) => CloginScreen()),
|
||||||
|
GoRoute(path: '/welcomec', builder: (context, state) => WelcomeCollectorScreen()),
|
||||||
|
|
||||||
// Rute untuk verifikasi OTP dengan ekstraksi data dari path
|
// Rute untuk verifikasi OTP dengan ekstraksi data dari path
|
||||||
GoRoute(
|
GoRoute(
|
||||||
|
|
|
@ -0,0 +1,110 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:gap/gap.dart';
|
||||||
|
import 'package:rijig_mobile/core/router.dart';
|
||||||
|
import 'package:rijig_mobile/core/utils/guide.dart';
|
||||||
|
import 'package:rijig_mobile/widget/buttoncard.dart';
|
||||||
|
import 'package:rijig_mobile/widget/formfiled.dart';
|
||||||
|
|
||||||
|
class CloginScreen extends StatefulWidget {
|
||||||
|
const CloginScreen({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<CloginScreen> createState() => _CloginScreenState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _CloginScreenState extends State<CloginScreen> {
|
||||||
|
final TextEditingController cPhoneController = TextEditingController();
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final mediaQuery = MediaQuery.of(context);
|
||||||
|
return Scaffold(
|
||||||
|
body: SafeArea(
|
||||||
|
child: Center(
|
||||||
|
child: Padding(
|
||||||
|
padding: PaddingCustom().paddingHorizontalVertical(15, 40),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
"Selamat datang di aplikasi",
|
||||||
|
style: Tulisan.subheading(),
|
||||||
|
),
|
||||||
|
Text("Rijig", style: Tulisan.heading(color: primaryColor)),
|
||||||
|
SizedBox(height: mediaQuery.size.height * 0.2),
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
Image.asset(
|
||||||
|
'assets/image/security.png',
|
||||||
|
width: mediaQuery.size.width * 0.35,
|
||||||
|
),
|
||||||
|
FormFieldOne(
|
||||||
|
controllers: cPhoneController,
|
||||||
|
hintText: 'Masukkan nomor whatsapp anda!',
|
||||||
|
placeholder: "cth.62..",
|
||||||
|
isRequired: true,
|
||||||
|
textInputAction: TextInputAction.done,
|
||||||
|
keyboardType: TextInputType.phone,
|
||||||
|
onTap: () {},
|
||||||
|
onChanged: (value) {},
|
||||||
|
fontSize: 14,
|
||||||
|
fontSizeField: 16,
|
||||||
|
onFieldSubmitted: (value) {},
|
||||||
|
readOnly: false,
|
||||||
|
enabled: true,
|
||||||
|
),
|
||||||
|
SizedBox(height: 20),
|
||||||
|
CardButtonOne(
|
||||||
|
textButton: "Kirim OTP",
|
||||||
|
// viewModel.isLoading
|
||||||
|
// ? 'Sending OTP...'
|
||||||
|
// : 'Send OTP',
|
||||||
|
fontSized: 16.sp,
|
||||||
|
colorText: whiteColor,
|
||||||
|
color: primaryColor,
|
||||||
|
borderRadius: 10,
|
||||||
|
horizontal: double.infinity,
|
||||||
|
vertical: 50,
|
||||||
|
onTap: () {
|
||||||
|
// if (cPhoneController.text.isNotEmpty) {
|
||||||
|
// debugPrint("send otp dipencet");
|
||||||
|
// await viewModel.loginOrRegister(
|
||||||
|
// cPhoneController.text,
|
||||||
|
// );
|
||||||
|
// if (viewModel.loginResponse != null) {
|
||||||
|
// router.go(
|
||||||
|
// "/verif-otp",
|
||||||
|
// extra: cPhoneController.text,
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
// loadingTrue: viewModel.isLoading,
|
||||||
|
usingRow: false,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Gap(20),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Text("kembali ke login sebagai:"),
|
||||||
|
TextButton(
|
||||||
|
onPressed: () => router.go('/login'),
|
||||||
|
child: Text("masyarakat?"),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
// return const Placeholder();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,73 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:gap/gap.dart';
|
||||||
|
import 'package:rijig_mobile/core/router.dart';
|
||||||
|
import 'package:rijig_mobile/core/utils/guide.dart';
|
||||||
|
import 'package:rijig_mobile/widget/buttoncard.dart';
|
||||||
|
|
||||||
|
class WelcomeCollectorScreen extends StatefulWidget {
|
||||||
|
const WelcomeCollectorScreen({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<WelcomeCollectorScreen> createState() => _WelcomeSeekJobScreenState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _WelcomeSeekJobScreenState extends State<WelcomeCollectorScreen> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final mediaQuery = MediaQuery.of(context);
|
||||||
|
|
||||||
|
return Scaffold(
|
||||||
|
backgroundColor: whiteColor,
|
||||||
|
body: SafeArea(
|
||||||
|
child: Padding(
|
||||||
|
padding: PaddingCustom().paddingHorizontal(24),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
flex: 5,
|
||||||
|
child: Center(
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/image/welcome_collector.png',
|
||||||
|
width: mediaQuery.size.width * 0.8,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Gap(20),
|
||||||
|
Text(
|
||||||
|
'Selamat datang pengepul!',
|
||||||
|
style: Tulisan.heading(),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
Gap(15),
|
||||||
|
Text(
|
||||||
|
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
||||||
|
style: Tulisan.customText(
|
||||||
|
color: greyAbsolutColor,
|
||||||
|
fontsize: 14.sp,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
const Spacer(),
|
||||||
|
CardButtonOne(
|
||||||
|
textButton: "Lanjut",
|
||||||
|
fontSized: 16.sp,
|
||||||
|
colorText: whiteColor,
|
||||||
|
color: primaryColor,
|
||||||
|
borderRadius: 10,
|
||||||
|
horizontal: double.infinity,
|
||||||
|
vertical: 50,
|
||||||
|
onTap: () {
|
||||||
|
router.go("/clogin");
|
||||||
|
},
|
||||||
|
usingRow: false,
|
||||||
|
),
|
||||||
|
Gap(30),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,6 +17,7 @@ class LoginScreen extends StatefulWidget {
|
||||||
class LoginScreenState extends State<LoginScreen> {
|
class LoginScreenState extends State<LoginScreen> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final mediaQuery = MediaQuery.of(context);
|
||||||
final TextEditingController phoneController = TextEditingController();
|
final TextEditingController phoneController = TextEditingController();
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: Consumer<LoginViewModel>(
|
body: Consumer<LoginViewModel>(
|
||||||
|
@ -38,9 +39,14 @@ class LoginScreenState extends State<LoginScreen> {
|
||||||
"Rijig",
|
"Rijig",
|
||||||
style: Tulisan.heading(color: primaryColor),
|
style: Tulisan.heading(color: primaryColor),
|
||||||
),
|
),
|
||||||
Gap(60),
|
// Gap(60),
|
||||||
|
SizedBox(height: mediaQuery.size.height * 0.2),
|
||||||
Column(
|
Column(
|
||||||
children: [
|
children: [
|
||||||
|
Image.asset(
|
||||||
|
'assets/image/security.png',
|
||||||
|
width: mediaQuery.size.width * 0.35,
|
||||||
|
),
|
||||||
FormFieldOne(
|
FormFieldOne(
|
||||||
controllers: phoneController,
|
controllers: phoneController,
|
||||||
hintText: 'Masukkan nomor whatsapp anda!',
|
hintText: 'Masukkan nomor whatsapp anda!',
|
||||||
|
@ -87,6 +93,17 @@ class LoginScreenState extends State<LoginScreen> {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
Gap(20),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Text("login sebagai:"),
|
||||||
|
TextButton(
|
||||||
|
onPressed: () => router.go('/welcomec'),
|
||||||
|
child: Text("pengepul?"),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gap/gap.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:rijig_mobile/core/utils/guide.dart';
|
||||||
import 'package:rijig_mobile/features/launch/model/onboard_model.dart';
|
import 'package:rijig_mobile/features/launch/model/onboard_model.dart';
|
||||||
|
|
||||||
class OnboardingView extends StatelessWidget {
|
class OnboardingView extends StatelessWidget {
|
||||||
|
@ -14,35 +15,30 @@ class OnboardingView extends StatelessWidget {
|
||||||
children: [
|
children: [
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: MediaQuery.of(context).size.width,
|
width: MediaQuery.of(context).size.width,
|
||||||
height: MediaQuery.of(context).size.width,
|
height: MediaQuery.of(context).size.height * 0.4,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.only(top: 40.0),
|
padding: PaddingCustom().paddingOnly(top: 40),
|
||||||
child: Image.network(data.imagePath, fit: BoxFit.contain),
|
child: Image.asset(data.imagePath, fit: BoxFit.contain),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(15),
|
padding: PaddingCustom().paddingAll(15),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(data.headline, style: Tulisan.heading()),
|
||||||
data.headline,
|
|
||||||
style: Theme.of(context).textTheme.titleLarge?.copyWith(
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 24,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 15.0),
|
padding: PaddingCustom().paddingVertical(15),
|
||||||
child: Text(
|
child: Text(
|
||||||
data.description,
|
data.description,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(fontSize: 16),
|
style: Tulisan.customText(fontsize: 14.sp),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Gap(100),
|
|
||||||
|
SizedBox(height: MediaQuery.of(context).size.height * 0.2),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,22 +3,22 @@ import 'package:rijig_mobile/features/launch/model/onboard_model.dart';
|
||||||
class OnboardingData {
|
class OnboardingData {
|
||||||
static List<OnboardingModel> items = [
|
static List<OnboardingModel> items = [
|
||||||
OnboardingModel(
|
OnboardingModel(
|
||||||
imagePath: "https://i.imgur.com/X2G11k0.png",
|
imagePath: "assets/image/onboard_first.png",
|
||||||
headline: 'Browse all the category',
|
headline: 'Sampahmu, Cuanmu',
|
||||||
description:
|
description:
|
||||||
'In aliquip aute exercitation ut et nisi ut mollit. Deserunt dolor elit pariatur aute .',
|
'Jual sampah dari rumah tanpa ribet. Bisa dapet duit, bisa bantu lingkungan juga!',
|
||||||
),
|
),
|
||||||
OnboardingModel(
|
OnboardingModel(
|
||||||
imagePath: "https://i.imgur.com/X2G11k0.png",
|
imagePath: "assets/image/waiting_oboard_sec.png",
|
||||||
headline: 'Amazing Discounts & Offers',
|
headline: 'Pilih Pengepul, Duduk Manis',
|
||||||
description:
|
description:
|
||||||
'In aliquip aute exercitation ut et nisi ut mollit. Deserunt dolor elit pariatur aute .',
|
'Tinggal pilih pengepul terdekat, mereka yang datang ke kamu. Praktis banget, kan?',
|
||||||
),
|
),
|
||||||
OnboardingModel(
|
OnboardingModel(
|
||||||
imagePath: "https://i.imgur.com/X2G11k0.png",
|
imagePath: "assets/image/onboard_third.png",
|
||||||
headline: 'Delivery in 30 Min',
|
headline: 'Ayo, Kita Jaga Bumi Bareng',
|
||||||
description:
|
description:
|
||||||
'In aliquip aute exercitation ut et nisi ut mollit. Deserunt dolor elit pariatur aute .',
|
'Satu langkah kecil bisa bikin perubahan besar. Yuk mulai sekarang — lanjut masuk dulu, ya!',
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
120
pubspec.lock
120
pubspec.lock
|
@ -336,6 +336,126 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.2.1"
|
version: "6.2.1"
|
||||||
|
google_ml_kit:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: google_ml_kit
|
||||||
|
sha256: a2da12a62353a6cad71534b52ada3af14a5b842e6c9b1014ce4d243652b30f4b
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.20.0"
|
||||||
|
google_mlkit_barcode_scanning:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_barcode_scanning
|
||||||
|
sha256: b38505df2d3fdf7830979d60fee55039c2f442d189b2e06fcb2fe494ba65d0db
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.14.1"
|
||||||
|
google_mlkit_commons:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_commons
|
||||||
|
sha256: "8f40fbac10685cad4715d11e6a0d86837d9ad7168684dfcad29610282a88e67a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.11.0"
|
||||||
|
google_mlkit_digital_ink_recognition:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_digital_ink_recognition
|
||||||
|
sha256: "8d2b89401bdeeba97158377167429dbc5cb339ebbd21e0889dca773f1c79a884"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.14.1"
|
||||||
|
google_mlkit_entity_extraction:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_entity_extraction
|
||||||
|
sha256: "145bc26422b7e62d50cc4eca1ac394d13ac6a97e4c09b8baf7ff058b64d2f9cc"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.15.1"
|
||||||
|
google_mlkit_face_detection:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_face_detection
|
||||||
|
sha256: f336737d5b8a86797fd4368f42a5c26aeaa9c6dcc5243f0a16b5f6f663cfb70a
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.13.1"
|
||||||
|
google_mlkit_face_mesh_detection:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_face_mesh_detection
|
||||||
|
sha256: "3683daed2463d9631c7f01b31bfc40d22a1fd4c0392d82a24ce275af06bc811f"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.4.1"
|
||||||
|
google_mlkit_image_labeling:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_image_labeling
|
||||||
|
sha256: "2cac5f7a02dcc23cd3357f89bf1a79df793ae3afce5035a896de467ffa0192e8"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.14.1"
|
||||||
|
google_mlkit_language_id:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_language_id
|
||||||
|
sha256: fc57bca69cb1dcd8ef67b929f0315e9a8baa80c03c75f7a1226becd7ad2529ff
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.13.0"
|
||||||
|
google_mlkit_object_detection:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_object_detection
|
||||||
|
sha256: "0f740f046d74faf81d9c44cdbe4accf33888ed9f877e30efbfad4578d45ebfcd"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.15.0"
|
||||||
|
google_mlkit_pose_detection:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_pose_detection
|
||||||
|
sha256: "5ff5fe2a325427c49c02a884a2a888d2d10cbfe414f7ebf2af9777a5155171eb"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.14.0"
|
||||||
|
google_mlkit_selfie_segmentation:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_selfie_segmentation
|
||||||
|
sha256: e05fc255265595a0fb11cd6a6a5393f106d6ec4d3a40cbc57ff22894eef235f1
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.10.0"
|
||||||
|
google_mlkit_smart_reply:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_smart_reply
|
||||||
|
sha256: "0c3d737e46f20aa4d4953860ee5757e5250e58f90351f8e2afdeb1d609c7047e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.13.0"
|
||||||
|
google_mlkit_text_recognition:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_text_recognition
|
||||||
|
sha256: "96173ad4dd7fd06c660e22ac3f9e9f1798a517fe7e48bee68eeec83853224224"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.15.0"
|
||||||
|
google_mlkit_translation:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_mlkit_translation
|
||||||
|
sha256: "7287444a0abd994087a0b354dee952fcd198e57619ded4bba65496d418c9d84b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.13.0"
|
||||||
http:
|
http:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -27,6 +27,7 @@ dependencies:
|
||||||
get_it: ^8.0.3
|
get_it: ^8.0.3
|
||||||
go_router: ^15.1.1
|
go_router: ^15.1.1
|
||||||
google_fonts: ^6.0.0
|
google_fonts: ^6.0.0
|
||||||
|
google_ml_kit: ^0.20.0
|
||||||
http: ^1.3.0
|
http: ^1.3.0
|
||||||
http_parser: ^4.1.2
|
http_parser: ^4.1.2
|
||||||
iconsax_flutter: ^1.0.0
|
iconsax_flutter: ^1.0.0
|
||||||
|
|
Loading…
Reference in New Issue