From 036d0279de1a37d1db38331019811542aefc55f7 Mon Sep 17 00:00:00 2001 From: Sneha Date: Wed, 13 Aug 2025 11:18:45 +0530 Subject: [PATCH] changes --- images/eye_icon.png | Bin 0 -> 2417 bytes images/final_splash_screen.jpg | Bin 0 -> 24225 bytes images/login_logo.png | Bin 0 -> 6589 bytes images/open_eye.png | Bin 0 -> 2493 bytes lib/common/settings.dart | 64 ++++++ lib/common/splash_screen.dart | 99 ++++++++ lib/login/login.dart | 215 ++++++++++++++++++ lib/login/login_signup_screen.dart | 97 ++++++++ lib/login/starting_screen.dart | 89 ++++++++ lib/main.dart | 122 ++-------- macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 130 ++++++++++- pubspec.yaml | 73 +----- test/widget_test.dart | 3 +- 14 files changed, 716 insertions(+), 178 deletions(-) create mode 100644 images/eye_icon.png create mode 100644 images/final_splash_screen.jpg create mode 100644 images/login_logo.png create mode 100644 images/open_eye.png create mode 100644 lib/common/settings.dart create mode 100644 lib/common/splash_screen.dart create mode 100644 lib/login/login.dart create mode 100644 lib/login/login_signup_screen.dart create mode 100644 lib/login/starting_screen.dart diff --git a/images/eye_icon.png b/images/eye_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ea74d4fab931305f9763350d777182c00a3b0e GIT binary patch literal 2417 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 Hu0mjf06nYx literal 0 HcmV?d00001 diff --git a/lib/common/settings.dart b/lib/common/settings.dart new file mode 100644 index 0000000..94ea43e --- /dev/null +++ b/lib/common/settings.dart @@ -0,0 +1,64 @@ + + +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; + +const Color primaryColor = Color(0XFF1D7AFC); +const Color secondaryColor = Color(0XFFBFE0ED); +const Color greyColor = Color(0XFF7E7F80); + +TextStyle fontTextStyle(double fontSize,Color fontColor,FontWeight weight) { + return GoogleFonts.inter( + textStyle: TextStyle( + fontSize: fontSize, + fontWeight: weight, + color:fontColor, + ), + ); +} + +InputDecoration textFormFieldDecoration(IconData icon,var text){ + return InputDecoration( + counterText: '', + filled: false, + fillColor: Colors.white, + /*prefixIcon: Icon( + icon, + color: Colors.white, + ),*/ + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide(color: greyColor, + width: 1, )), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide(color: Color(0XFF1D7AFC),width: 2,), + ), + + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide(color: greyColor), + ), + labelText: text, + labelStyle:fontTextStyle(14,Color(0XFF7E7F80),FontWeight.w400), + /* TextStyle(color: greyColor, fontWeight: FontWeight.bold //<-- SEE HERE + ),*/ + ); +} + + +class AppSettings{ + static Future internetConnectivity() async { + try { + final result = await InternetAddress.lookup('google.com'); + if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) { + return true; + } + } on SocketException catch (_) { + return false; + } + return false; + } +} \ No newline at end of file diff --git a/lib/common/splash_screen.dart b/lib/common/splash_screen.dart new file mode 100644 index 0000000..148d400 --- /dev/null +++ b/lib/common/splash_screen.dart @@ -0,0 +1,99 @@ +import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:supplier_new/login/login.dart'; +import 'package:supplier_new/login/starting_screen.dart'; + +void main() async{ + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + //FirebaseMessaging.onBackgroundMessage(_messageHandler); + runApp(new Splash()); +} + + +class Splash extends StatelessWidget { + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + debugShowCheckedModeBanner: false, + title: 'Water Management', + theme: new ThemeData( + primarySwatch: Colors.blue, + ), + home: new SplashScreen(), + ); + } +} + +class SplashScreen extends StatefulWidget { + const SplashScreen({ super.key }); + + @override + State createState() => _SplashScreenState(); +} + +class _SplashScreenState extends State { + + + Widget _defaultHome = new StartingScreen(); + + + /*void loginCheck()async{ + + bool _result = await AppSettings.isSigIn(); + + + *//*store device information in firebase*//* + try{ + if(Platform.isIOS){ + await FireBaseCore.init(); + } + //await FireBaseCore.init(); + await FireBaseCore.checkFcmTokenInFireStoreDbWithdeviceId(); + // AppSettings.fcmId=await AppSettings.getData('FCM_TOKEN', 'STRING'); + } + catch(e){ + print(e); + } + + if (_result) { + await AppSettings.loadDataFromMemory(); + AppSettings.fcmId=await AppSettings.getData('FCM_TOKEN', 'STRING'); + // await AppSettings.getProfile(); + _defaultHome = new DashboardScreen(); + } + }*/ + + + + + @override + void initState() { + + //loginCheck(); + super.initState(); + Future.delayed( + const Duration(seconds: 3), + () => Navigator.push( + context, + MaterialPageRoute(builder: (context) => _defaultHome), + )); + } + @override + Widget build(BuildContext context) { + return Scaffold( + body: Stack( + children: [ + Container( + decoration: const BoxDecoration( + image: DecorationImage(image: AssetImage("images/final_splash_screen.jpg"), fit: BoxFit.fill,), + ), + ), + + ], + ) + ); + } + +} \ No newline at end of file diff --git a/lib/login/login.dart b/lib/login/login.dart new file mode 100644 index 0000000..7d3a50d --- /dev/null +++ b/lib/login/login.dart @@ -0,0 +1,215 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:supplier_new/common/settings.dart'; + +class Login extends StatefulWidget { + const Login({super.key}); + + @override + State createState() => _LoginState(); +} + +class _LoginState extends State { + + + bool isObscureText=true; + TextEditingController mobileNumberController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); + + + @override + void initState() { + isObscureText=true; + super.initState(); + } + + + Future onWillPop() async { + final shouldPop = await showDialog(context: context, builder: (context) { + return AlertDialog( + title: const Text('Do you want to exit app?', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + actionsAlignment: MainAxisAlignment.spaceBetween, + actions: [ + TextButton( + onPressed: () { + SystemNavigator.pop(); + }, + child: const Text('Yes', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + ), + TextButton( + onPressed: () { + Navigator.of(context).pop(false); + }, + child: const Text('No', + style: TextStyle( + color: primaryColor, + fontSize: 20, + )), + ), + ], + ); + }, + ); + return shouldPop!; + } + + @override + Widget build(BuildContext context) { + String lastInputValue=""; + + return WillPopScope( + onWillPop: () async => onWillPop(), + child: Scaffold( + backgroundColor: Colors.white, + body: Stack( + children: [ + /*Container( + decoration: const BoxDecoration( + image: DecorationImage(image: AssetImage("images/backgroundimage.png"), fit: BoxFit.cover,), + ), + ),*/ + GestureDetector( + onTap: () { + FocusManager.instance.primaryFocus?.unfocus(); + }, + child: SafeArea( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.fromLTRB(24, 0, 24, 0), + child: Column( + + children: [ + Image( + image: const AssetImage('images/login_logo.png'), + height: MediaQuery.of(context).size.height * .30, + width:MediaQuery.of(context).size.width * .30, + ), + + SizedBox(height:MediaQuery.of(context).size.height * .04,), + /*Align( + alignment: Alignment.bottomLeft, + child: Text('Welcome!', style:fontTextStyle(24,Color(0XFF1C1E20),FontWeight.w800) + + *//*style: GoogleFonts.inter( + textStyle: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: Colors.black, + ), + ),*//*), + ),*/ + SizedBox(height:MediaQuery.of(context).size.height * .024,), + Container( + child: TextFormField( + controller: mobileNumberController, + keyboardType: TextInputType.number, + textCapitalization: TextCapitalization.sentences, + maxLength: 10, + decoration: textFormFieldDecoration(Icons.phone,'Mobile Number'), + style:fontTextStyle(14,Color(0XFF101214),FontWeight.w400), + cursorColor: Color(0XFF1D7AFC), + + //TextStyle(color: Colors.black,fontWeight: FontWeight.bold), + ), + ), + SizedBox(height:MediaQuery.of(context).size.height * .016,), + + Container( + child: TextFormField( + cursorColor:Color(0XFF1D7AFC), + obscureText: isObscureText, + obscuringCharacter: '*', + controller: passwordController, + decoration: InputDecoration( + filled: false, + fillColor: Colors.white, + labelText: 'Password', + //prefixIcon: const Icon(Icons.lock, color: Colors.white,), + labelStyle: fontTextStyle(14,Color(0XFF7E7F80),FontWeight.w400), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide(color: greyColor, + width: 1, )), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide(color: Color(0XFF1D7AFC),width: 2,), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide(color: greyColor), + ), + + suffixIcon: IconButton( + icon: isObscureText==true?Image.asset('images/eye_icon.png',color: Color(0XFF7E7F80),width: 30,height: 30,):Image.asset('images/open_eye.png',color:Color(0XFF7E7F80),width: 30,height: 30,), + /* Icon( + icon:Image.asset('assets/your_image.png'), + color: isObscureText==true?greyColor:primaryColor, + ),*/ + onPressed: () { + + print("show password"); + setState(() { + isObscureText = !isObscureText; + }); + }, + ), + + ), + style: fontTextStyle(14,Color(0XFF101214),FontWeight.w400), + + ), + ), + + SizedBox(height:MediaQuery.of(context).size.height * .016,), + Align( + alignment: Alignment.bottomLeft, + child:GestureDetector( + onTap: (){ + /*Navigator.push( + context, + MaterialPageRoute(builder: (context) => ForgotpasswordNew()), + );*/ + }, + child: Text( + 'Forgot Password?', + style: fontTextStyle(12,Color(0XFF1D7AFC),FontWeight.w600), + + ), + ) + ), + SizedBox(height:MediaQuery.of(context).size.height * .024,), + Container( + width:double.infinity, + height: MediaQuery.of(context).size.height * .06, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: primaryColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), // Customize the radius + ), + ), + onPressed: () async{ + + }, + child: Text('Login',style: fontTextStyle(12,Colors.white,FontWeight.w600),), + )), + ], + ), + ) + )), + ), + ], + ) + ), + ); + } +} diff --git a/lib/login/login_signup_screen.dart b/lib/login/login_signup_screen.dart new file mode 100644 index 0000000..a28b7b6 --- /dev/null +++ b/lib/login/login_signup_screen.dart @@ -0,0 +1,97 @@ +import 'package:flutter/material.dart'; +import 'package:supplier_new/common/settings.dart'; +import 'package:supplier_new/login/login.dart'; + +class LoginSignUpScreen extends StatefulWidget { + const LoginSignUpScreen({super.key}); + + @override + State createState() => _LoginSignUpScreenState(); +} + +class _LoginSignUpScreenState extends State { + @override + Widget build(BuildContext context) { + return SafeArea( + child: Scaffold( + body: Padding( + padding: EdgeInsets.all(24), + child: Column( + children: [ + SizedBox(height: MediaQuery.of(context).size.height * .2), + Center( + child: Text("AQUICK SUPPLIER", + style: fontTextStyle(20, Color(0XFF515253), FontWeight.w800)), + ), + SizedBox(height: MediaQuery.of(context).size.height * .05), + CircleAvatar(radius: 80, backgroundColor: Color(0XFFC9DFFE)), + SizedBox(height: MediaQuery.of(context).size.height * .05), + Center( + child: Text( + "Welcome to Aquick Supplier", + style: fontTextStyle(20, Color(0XFF343637), FontWeight.w700), + ), + ), + SizedBox(height: MediaQuery.of(context).size.height * .012), + Center( + child: Text( + "Sign up or login to be listed as a supplier, start deliveries and track orders", + style: fontTextStyle(12, Color(0XFF7E7F80), FontWeight.w400), + textAlign: TextAlign.center, // Keeps text centered in multiple lines + ), + ) + , + SizedBox(height: MediaQuery.of(context).size.height * .04), + Container( + width:double.infinity, + height: MediaQuery.of(context).size.height * .06, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: primaryColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), // Customize the radius + ), + ), + onPressed: () async{ + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => Login()), + ); + }, + child: Text('Login',style: fontTextStyle(14,Colors.white,FontWeight.w500),), + )), + SizedBox(height: MediaQuery.of(context).size.height * .012), + Container( + width: double.infinity, + height: MediaQuery.of(context).size.height * .06, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + foregroundColor: Color(0XFF757575), + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), // Customize the radius + side: BorderSide( + color: Color(0XFF757575), // Border color + width: 1, // Border width + ), + ), + ), + onPressed: () async { + // Your onPressed logic + }, + child: Text( + 'Sign up', + style: fontTextStyle(12, Color(0XFF757575), FontWeight.w500), + ), + ), + ) + + ], + ), + ) + ), + ); + } +} diff --git a/lib/login/starting_screen.dart b/lib/login/starting_screen.dart new file mode 100644 index 0000000..740ed57 --- /dev/null +++ b/lib/login/starting_screen.dart @@ -0,0 +1,89 @@ +import 'package:flutter/material.dart'; +import 'package:supplier_new/common/settings.dart'; +import 'package:supplier_new/login/login_signup_screen.dart'; + +class StartingScreen extends StatefulWidget { + const StartingScreen({super.key}); + + @override + State createState() => _StartingScreenState(); +} + +class _StartingScreenState extends State { + @override + Widget build(BuildContext context) { + return SafeArea( + child: Scaffold( + body: Padding( + padding: EdgeInsets.all(24), + child: Column( + children: [ + SizedBox(height: MediaQuery.of(context).size.height * .2), + Center( + child: Text("AQUICK SUPPLIER", + style: fontTextStyle(20, Color(0XFF515253), FontWeight.w800)), + ), + SizedBox(height: MediaQuery.of(context).size.height * .05), + CircleAvatar(radius: 80, backgroundColor: Color(0XFFC9DFFE)), + SizedBox(height: MediaQuery.of(context).size.height * .05), + Center( + child: Text("Want to be a supplier on Aquick Tankers?", + style: fontTextStyle(16, Color(0XFF343637), FontWeight.w600)), + ), + SizedBox(height: MediaQuery.of(context).size.height * .04), + Container( + width: double.infinity, + height: MediaQuery.of(context).size.height * .06, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: primaryColor, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(24.0), // Customize the radius + ), + ), + onPressed: () async { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => LoginSignUpScreen()), + ); + }, + child: Text( + 'Yes', + style: fontTextStyle(14, Colors.white, FontWeight.w500), + ), + )), + SizedBox(height: MediaQuery.of(context).size.height * .012), + Container( + width: double.infinity, + height: MediaQuery.of(context).size.height * .06, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + foregroundColor: Color(0XFF757575), + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(24.0), // Customize the radius + side: BorderSide( + color: Color(0XFF757575), // Border color + width: 1, // Border width + ), + ), + ), + onPressed: () async { + // Your onPressed logic + }, + child: Text( + 'No, I want to buy water', + style: fontTextStyle(12, Color(0XFF757575), FontWeight.w500), + ), + ), + ) + ], + ), + )), + ); + } +} diff --git a/lib/main.dart b/lib/main.dart index 8e94089..4f11f8e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,125 +1,29 @@ import 'package:flutter/material.dart'; +import 'package:supplier_new/common/splash_screen.dart'; -void main() { - runApp(const MyApp()); + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runApp(MyApp()); } -class MyApp extends StatelessWidget { - const MyApp({super.key}); +// Create a global navigator key +final GlobalKey navigatorKey = GlobalKey(); - // This widget is the root of your application. +class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - title: 'Flutter Demo', + debugShowCheckedModeBanner: false, + title: 'Water Management App', + navigatorKey: navigatorKey, // Set the navigator key theme: ThemeData( - // This is the theme of your application. - // - // TRY THIS: Try running your application with "flutter run". You'll see - // the application has a purple toolbar. Then, without quitting the app, - // try changing the seedColor in the colorScheme below to Colors.green - // and then invoke "hot reload" (save your changes or press the "hot - // reload" button in a Flutter-supported IDE, or press "r" if you used - // the command line to start the app). - // - // Notice that the counter didn't reset back to zero; the application - // state is not lost during the reload. To reset the state, use hot - // restart instead. - // - // This works for code too, not just values: Most code changes can be - // tested with just a hot reload. colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), - home: const MyHomePage(title: 'Flutter Demo Home Page'), + home: SplashScreen(), // Your initial screen ); } } -class MyHomePage extends StatefulWidget { - const MyHomePage({super.key, required this.title}); - - // This widget is the home page of your application. It is stateful, meaning - // that it has a State object (defined below) that contains fields that affect - // how it looks. - - // This class is the configuration for the state. It holds the values (in this - // case the title) provided by the parent (in this case the App widget) and - // used by the build method of the State. Fields in a Widget subclass are - // always marked "final". - - final String title; - - @override - State createState() => _MyHomePageState(); -} - -class _MyHomePageState extends State { - int _counter = 0; - - void _incrementCounter() { - setState(() { - // This call to setState tells the Flutter framework that something has - // changed in this State, which causes it to rerun the build method below - // so that the display can reflect the updated values. If we changed - // _counter without calling setState(), then the build method would not be - // called again, and so nothing would appear to happen. - _counter++; - }); - } - - @override - Widget build(BuildContext context) { - // This method is rerun every time setState is called, for instance as done - // by the _incrementCounter method above. - // - // The Flutter framework has been optimized to make rerunning build methods - // fast, so that you can just rebuild anything that needs updating rather - // than having to individually change instances of widgets. - return Scaffold( - appBar: AppBar( - // TRY THIS: Try changing the color here to a specific color (to - // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar - // change color while the other colors stay the same. - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - // Here we take the value from the MyHomePage object that was created by - // the App.build method, and use it to set our appbar title. - title: Text(widget.title), - ), - body: Center( - // Center is a layout widget. It takes a single child and positions it - // in the middle of the parent. - child: Column( - // Column is also a layout widget. It takes a list of children and - // arranges them vertically. By default, it sizes itself to fit its - // children horizontally, and tries to be as tall as its parent. - // - // Column has various properties to control how it sizes itself and - // how it positions its children. Here we use mainAxisAlignment to - // center the children vertically; the main axis here is the vertical - // axis because Columns are vertical (the cross axis would be - // horizontal). - // - // TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint" - // action in the IDE, or press "p" in the console), to see the - // wireframe for each widget. - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text( - 'You have pushed the button this many times:', - ), - Text( - '$_counter', - style: Theme.of(context).textTheme.headlineMedium, - ), - ], - ), - ), - floatingActionButton: FloatingActionButton( - onPressed: _incrementCounter, - tooltip: 'Increment', - child: const Icon(Icons.add), - ), // This trailing comma makes auto-formatting nicer for build methods. - ); - } -} diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index cccf817..e777c67 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,8 @@ import FlutterMacOS import Foundation +import path_provider_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 6cb5f72..75fba8d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -41,6 +41,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" cupertino_icons: dependency: "direct main" description: @@ -57,6 +65,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + url: "https://pub.dev" + source: hosted + version: "2.1.3" flutter: dependency: "direct main" description: flutter @@ -75,6 +91,30 @@ packages: description: flutter source: sdk version: "0.0.0" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + sha256: "2776c66b3e97c6cdd58d1bd3281548b074b64f1fd5c8f82391f7456e38849567" + url: "https://pub.dev" + source: hosted + version: "4.0.5" + http: + dependency: transitive + description: + name: http + sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 + url: "https://pub.dev" + source: hosted + version: "1.5.0" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" leak_tracker: dependency: transitive description: @@ -139,6 +179,70 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.0" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7" + url: "https://pub.dev" + source: hosted + version: "2.2.10" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" sky_engine: dependency: transitive description: flutter @@ -192,6 +296,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.0" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" vector_math: dependency: transitive description: @@ -208,6 +320,22 @@ packages: url: "https://pub.dev" source: hosted version: "14.2.1" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" sdks: dart: ">=3.4.4 <4.0.0" - flutter: ">=3.18.0-18.0.pre.54" + flutter: ">=3.22.0" diff --git a/pubspec.yaml b/pubspec.yaml index b006af3..7dc80f5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,90 +1,29 @@ name: supplier_new description: "A new Flutter project." -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: 'none' # Remove this line if you wish to publish to pub.dev -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. -# Read more about iOS versioning at -# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -# In Windows, build-name is used as the major, minor, and patch parts -# of the product and file versions while build-number is used as the build suffix. +publish_to: 'none' + version: 1.0.0+1 environment: sdk: '>=3.4.4 <4.0.0' -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. dependencies: flutter: sdk: flutter - - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.6 + google_fonts: ^4.0.4 dev_dependencies: flutter_test: sdk: flutter - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. flutter_lints: ^3.0.0 -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter packages. flutter: - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. - uses-material-design: true - - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages + uses-material-design: true + assets: + - images/ diff --git a/test/widget_test.dart b/test/widget_test.dart index 8615f9d..335fa9a 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -7,13 +7,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:supplier_new/common/splash_screen.dart'; import 'package:supplier_new/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); + await tester.pumpWidget( Splash()); // Verify that our counter starts at 0. expect(find.text('0'), findsOneWidget);