diff --git a/lib/main.dart b/lib/main.dart index 93d0f42..17bdea5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import '/pages/splash_screen.dart'; +import 'src/pages/splash_screen.dart'; void main() { runApp(const MyApp()); diff --git a/lib/pages/services/Assignment.dart b/lib/pages/services/Assignment.dart deleted file mode 100644 index 45fc60f..0000000 --- a/lib/pages/services/Assignment.dart +++ /dev/null @@ -1,27 +0,0 @@ -// ignore: camel_case_types - -import 'package:flutter/material.dart'; -import 'package:future_insight/widgets/WebViewWidget.dart'; -import 'package:future_insight/widgets/AppBar/appbarbackbutton.dart'; - -// ignore: camel_case_types -class assignment_service extends StatelessWidget { - const assignment_service({super.key}); - - @override - Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () async { - return Future.value(false); - }, - child: Scaffold( - appBar: BackCustomAppBar( - title: "Student Assignment", - ), - body: const WebViewWidget( - url: - 'https://future-insight.blog/services/assignment/', // replace with your actual URL - ), - )); - } -} diff --git a/lib/pages/services/ML.dart b/lib/pages/services/ML.dart deleted file mode 100644 index 83b1100..0000000 --- a/lib/pages/services/ML.dart +++ /dev/null @@ -1,24 +0,0 @@ -// ignore: file_names -import 'package:flutter/material.dart'; -import 'package:future_insight/widgets/WebViewWidget.dart'; -import 'package:future_insight/widgets/AppBar/appbarbackbutton.dart'; - -// ignore: camel_case_types -class ML_Service extends StatelessWidget { - const ML_Service({super.key}); - - @override - Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () async { - return Future.value(false); - }, - child: Scaffold( - appBar: BackCustomAppBar(title: "Machine Learning Development"), - body: const WebViewWidget( - url: - 'https://future-insight.blog/services/machinelearning/', // replace with your actual URL - ), - )); - } -} diff --git a/lib/pages/services/Mobile.dart b/lib/pages/services/Mobile.dart deleted file mode 100644 index 738b7f7..0000000 --- a/lib/pages/services/Mobile.dart +++ /dev/null @@ -1,24 +0,0 @@ -// ignore: file_names -import 'package:flutter/material.dart'; -import 'package:future_insight/widgets/WebViewWidget.dart'; -import 'package:future_insight/widgets/AppBar/appbarbackbutton.dart'; - -// ignore: camel_case_types -class application_development extends StatelessWidget { - const application_development({super.key}); - - @override - Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () async { - return Future.value(false); - }, - child: Scaffold( - appBar: BackCustomAppBar(title: "Application Development"), - body: const WebViewWidget( - url: - 'https://future-insight.blog/services/application-development/', // replace with your actual URL - ), - )); - } -} diff --git a/lib/pages/Bottom_Nav.dart b/lib/src/pages/Bottom_Nav.dart similarity index 88% rename from lib/pages/Bottom_Nav.dart rename to lib/src/pages/Bottom_Nav.dart index d24066f..6f57ed7 100644 --- a/lib/pages/Bottom_Nav.dart +++ b/lib/src/pages/Bottom_Nav.dart @@ -1,11 +1,11 @@ // ignore: file_names import 'package:flutter/material.dart'; import 'package:google_nav_bar/google_nav_bar.dart'; -import 'package:future_insight/pages/author.dart'; -import 'package:future_insight/pages/blog_post.dart'; -import 'package:future_insight/pages/contact.dart'; -import 'package:future_insight/pages/services.dart'; -import 'package:future_insight/pages/home.dart'; +import 'package:future_insight/src/pages/author.dart'; +import 'package:future_insight/src/pages/blog_post.dart'; +import 'package:future_insight/src/pages/contact.dart'; +import 'package:future_insight/src/pages/services.dart'; +import 'package:future_insight/src/pages/home.dart'; class Navbar extends StatefulWidget { // const Navbar({super.key}); diff --git a/lib/pages/author.dart b/lib/src/pages/author.dart similarity index 83% rename from lib/pages/author.dart rename to lib/src/pages/author.dart index 7b38194..b7e289f 100644 --- a/lib/pages/author.dart +++ b/lib/src/pages/author.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:future_insight/widgets/WebViewWidget.dart'; -import 'package:future_insight/widgets/AppBar/appbar.dart'; +import 'package:future_insight/src/widgets/WebViewWidget.dart'; +import 'package:future_insight/src/widgets/AppBar/appbar.dart'; // ignore: camel_case_types class author extends StatelessWidget { diff --git a/lib/pages/blog_post.dart b/lib/src/pages/blog_post.dart similarity index 82% rename from lib/pages/blog_post.dart rename to lib/src/pages/blog_post.dart index c9ff21f..398d375 100644 --- a/lib/pages/blog_post.dart +++ b/lib/src/pages/blog_post.dart @@ -1,7 +1,7 @@ // ignore_for_file: camel_case_types import 'package:flutter/material.dart'; -import 'package:future_insight/widgets/WebViewWidget.dart'; -import 'package:future_insight/widgets/AppBar/appbar.dart'; +import 'package:future_insight/src/widgets/WebViewWidget.dart'; +import 'package:future_insight/src/widgets/AppBar/appbar.dart'; class blog_post extends StatelessWidget { const blog_post({super.key}); diff --git a/lib/pages/contact.dart b/lib/src/pages/contact.dart similarity index 96% rename from lib/pages/contact.dart rename to lib/src/pages/contact.dart index 519f5e3..225dd69 100644 --- a/lib/pages/contact.dart +++ b/lib/src/pages/contact.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:contactus/contactus.dart'; -import 'package:future_insight/widgets/AppBar/appbar.dart'; +import 'package:future_insight/src/widgets/AppBar/appbar.dart'; class ContactUS extends StatefulWidget { const ContactUS({Key? key}) : super(key: key); diff --git a/lib/pages/hidden_drawer.dart b/lib/src/pages/hidden_drawer.dart similarity index 100% rename from lib/pages/hidden_drawer.dart rename to lib/src/pages/hidden_drawer.dart diff --git a/lib/pages/home.dart b/lib/src/pages/home.dart similarity index 80% rename from lib/pages/home.dart rename to lib/src/pages/home.dart index 51c8df7..174836e 100644 --- a/lib/pages/home.dart +++ b/lib/src/pages/home.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:future_insight/widgets/WebViewWidget.dart'; -import 'package:future_insight/widgets/AppBar/appbar.dart'; +import 'package:future_insight/src/widgets/WebViewWidget.dart'; +import 'package:future_insight/src/widgets/AppBar/appbar.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({super.key}); diff --git a/lib/pages/services.dart b/lib/src/pages/services.dart similarity index 75% rename from lib/pages/services.dart rename to lib/src/pages/services.dart index f9ceb7f..11fd92b 100644 --- a/lib/pages/services.dart +++ b/lib/src/pages/services.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; -import 'package:future_insight/widgets/service-boxes.dart'; -import 'package:future_insight/pages/services/Assignment.dart'; -import 'package:future_insight/pages/services/ML.dart'; -import 'package:future_insight/pages/services/Web.dart'; -import 'package:future_insight/pages/services/Mobile.dart'; -import 'package:future_insight/widgets/AppBar/appbar.dart'; +import 'package:future_insight/src/pages/services/android_app_dev.dart'; +import 'package:future_insight/src/widgets/service-boxes.dart'; +import 'package:future_insight/src/pages/services/assignemnt_service.dart'; +import 'package:future_insight/src/pages/services/machine-learning_service.dart'; +import 'package:future_insight/src/pages/services/web_dev.dart'; +import 'package:future_insight/src/widgets/AppBar/appbar.dart'; class Services extends StatefulWidget { const Services({Key? key}) : super(key: key); @@ -50,19 +50,19 @@ class _ServicesState extends State { gifAsset: 'assets/lottie/service/assignment.gif', onTap: () { Navigator.push( - context, - PageRouteBuilder( - pageBuilder: (_, __, ___) => const assignment_service(), - transitionDuration: const Duration(microseconds: 500), - transitionsBuilder: (_, a, __, c) => SlideTransition( - position: Tween( - begin: const Offset(1.0, 0.0), - end: Offset.zero, - ).animate(a), - child: c, - ), - ), - ); + context, + PageRouteBuilder( + pageBuilder: (_, __, ___) => + const assignemnt_service(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: (_, a, __, c) => SlideTransition( + position: Tween( + begin: const Offset(1.0, 0.0), + end: Offset.zero, + ).animate(a), + child: c, + ), + )); }, ), ), @@ -75,8 +75,9 @@ class _ServicesState extends State { Navigator.push( context, PageRouteBuilder( - pageBuilder: (_, __, ___) => const ML_Service(), - transitionDuration: const Duration(microseconds: 500), + pageBuilder: (_, __, ___) => + const machine_learning_service(), + transitionDuration: const Duration(milliseconds: 300), transitionsBuilder: (_, a, __, c) => SlideTransition( position: Tween( begin: const Offset(1.0, 0.0), @@ -100,7 +101,7 @@ class _ServicesState extends State { context, PageRouteBuilder( pageBuilder: (_, __, ___) => const Web_Devlopment(), - transitionDuration: const Duration(microseconds: 500), + transitionDuration: const Duration(milliseconds: 300), transitionsBuilder: (_, a, __, c) => SlideTransition( position: Tween( begin: const Offset(1.0, 0.0), @@ -124,8 +125,8 @@ class _ServicesState extends State { context, PageRouteBuilder( pageBuilder: (_, __, ___) => - const application_development(), - transitionDuration: const Duration(microseconds: 500), + const android_app_service(), + transitionDuration: const Duration(milliseconds: 300), transitionsBuilder: (_, a, __, c) => SlideTransition( position: Tween( begin: const Offset(1.0, 0.0), diff --git a/lib/src/pages/services/android_app_dev.dart b/lib/src/pages/services/android_app_dev.dart new file mode 100644 index 0000000..ae7440e --- /dev/null +++ b/lib/src/pages/services/android_app_dev.dart @@ -0,0 +1,248 @@ +import 'package:flutter/material.dart'; +import 'package:future_insight/src/pages/submit-task.dart'; +import 'package:future_insight/src/pages/terms-&-condition.dart'; +import 'package:future_insight/src/widgets/AppBar/appbarbackbutton.dart'; +import 'package:future_insight/src/widgets/services-cards.dart'; +import 'package:future_insight/src/widgets/text_style_service.dart'; + +// ignore: camel_case_types +class android_app_service extends StatefulWidget { + const android_app_service({super.key}); + + @override + State createState() => _android_app_serviceState(); +} + +// ignore: camel_case_types +class _android_app_serviceState extends State { + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + return Future.value(false); + }, + child: Scaffold( + backgroundColor: Colors.black, + appBar: BackCustomAppBar( + title: "Android Application", + ), + body: Container( + alignment: Alignment.topCenter, + child: Padding( + padding: const EdgeInsets.all(20), + child: ListView( + children: [ + const Text( + "Android Application Development Tiers:", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + const Text( + "Unlocking the Potential of Your Mobile Experience", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + const Text( + "At Future Insight, we offer three comprehensive tiers for Android application development, each tailored to meet your specific needs and requirements. Our aim is to deliver exceptional mobile experiences that captivate your audience and drive your business forward. Whether you're looking for a streamlined and cost-effective solution or a feature-rich and robust application, we have the right tier for you. Let's explore the tiers and discover the possibilities that await.", + textAlign: TextAlign.justify, + style: CustomTextStyles.regularTextStyle, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + const Text( + "Flexible Pricing: Choose the Plan That Fits Your Budget", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + CardService( + cardTitle: "Normal Package", + bulletPoints: const [ + "Personalize the UI to Your Liking", + "Harnessing Cutting-Edge Technologies", + "Comprehensive Guidance Documentation", + "Expert Front-End Development", + "One Video Call Support" + ], + buttonLabels: const ["Select Package", "Terms & Conditions"], + onButton1Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const select_Package(), + transitionDuration: const Duration( + milliseconds: + 300), // Set the total animation duration + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the first button tap + }, + onButton2Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const TermConditions(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the second button tap + }, + ), + const SizedBox(height: 15), + CardService( + cardTitle: "Advanced Package", + bulletPoints: const [ + // Add more bullet points as needed + ], + buttonLabels: const ["Select Package", "Terms & Conditions"], + onButton1Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const select_Package(), + transitionDuration: const Duration( + milliseconds: + 300), // Set the total animation duration + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the first button tap + }, + onButton2Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const TermConditions(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the second button tap + }, + ), + const SizedBox(height: 15), + CardService( + cardTitle: "Premium Package", + bulletPoints: const [ + //add points here + ], + buttonLabels: const ["Select Package", "Terms & Conditions"], + onButton1Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const select_Package(), + transitionDuration: const Duration( + milliseconds: + 300), // Set the total animation duration + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the first button tap + }, + onButton2Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const TermConditions(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + }, + ) + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/src/pages/services/assignemnt_service.dart b/lib/src/pages/services/assignemnt_service.dart new file mode 100644 index 0000000..9cd54de --- /dev/null +++ b/lib/src/pages/services/assignemnt_service.dart @@ -0,0 +1,254 @@ +// ignore: file_names +import 'package:flutter/material.dart'; +import 'package:future_insight/src/pages/submit-task.dart'; +import 'package:future_insight/src/pages/terms-&-condition.dart'; +import 'package:future_insight/src/widgets/AppBar/appbarbackbutton.dart'; +import 'package:future_insight/src/widgets/services-cards.dart'; +import 'package:future_insight/src/widgets/text_style_service.dart'; + +// ignore: camel_case_types +class assignemnt_service extends StatefulWidget { + // ignore: use_key_in_widget_constructors + const assignemnt_service({Key? key}); + + @override + State createState() => _assignemnt_serviceState(); +} + +// ignore: camel_case_types +class _assignemnt_serviceState extends State { + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + return Future.value(false); + }, + child: Scaffold( + backgroundColor: Colors.black, + appBar: BackCustomAppBar( + title: "Student Assignment", + ), + body: Container( + alignment: Alignment.topCenter, + child: Padding( + padding: const EdgeInsets.all(20), + child: ListView( + children: [ + const Text( + "Our Assignment Solutions:", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + const Text( + "Unlocking Your Academic Success", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + const Text( + "Welcome to Future Insight, your solution for expert assignment assistance. Our experienced team provides customized and high-quality assignment solutions for all subjects and academic levels. With our commitment to originality and confidentiality, you can trust us to help you excel in your academics. Join Future Insight today and unlock your full potential!", + textAlign: TextAlign.justify, + style: CustomTextStyles.regularTextStyle, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + const Text( + "Flexible Pricing: Choose the Plan That Fits Your Budget", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + CardService( + cardTitle: "Normal Package", + bulletPoints: const [ + "Solved Assignment", + "Documentation for Assignment", + ], + buttonLabels: const ["Select Package", "Terms & Conditions"], + onButton1Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const select_Package(), + transitionDuration: const Duration( + milliseconds: + 300), // Set the total animation duration + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the first button tap + }, + onButton2Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const TermConditions(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the second button tap + }, + ), + const SizedBox(height: 15), + CardService( + cardTitle: "Advanced Package", + bulletPoints: const [ + "Solved Assignment", + "Documentation for Assignment", + "Two Times for Alteration to Solved Assignment", + "One Video Call Support" + // Add more bullet points as needed + ], + buttonLabels: const ["Select Package", "Terms & Conditions"], + onButton1Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const select_Package(), + transitionDuration: const Duration( + milliseconds: + 300), // Set the total animation duration + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the first button tap + }, + onButton2Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const TermConditions(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the second button tap + }, + ), + const SizedBox(height: 15), + CardService( + cardTitle: "Premium Package", + bulletPoints: const [ + "Solved Assignment", + "Documentation for Assignment", + "Four Times for Alteration to Solved Assignment", + "Three Video Call Support" + ], + buttonLabels: const ["Select Package", "Terms & Conditions"], + onButton1Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const select_Package(), + transitionDuration: const Duration( + milliseconds: + 300), // Set the total animation duration + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the first button tap + }, + onButton2Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const TermConditions(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + }, + ) + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/src/pages/services/machine-learning_service.dart b/lib/src/pages/services/machine-learning_service.dart new file mode 100644 index 0000000..eb43141 --- /dev/null +++ b/lib/src/pages/services/machine-learning_service.dart @@ -0,0 +1,250 @@ +import 'package:flutter/material.dart'; +import 'package:future_insight/src/pages/submit-task.dart'; +import 'package:future_insight/src/pages/terms-&-condition.dart'; +import 'package:future_insight/src/widgets/AppBar/appbarbackbutton.dart'; +import 'package:future_insight/src/widgets/services-cards.dart'; +import 'package:future_insight/src/widgets/text_style_service.dart'; + +class machine_learning_service extends StatefulWidget { + const machine_learning_service({super.key}); + + @override + State createState() => + _machine_learning_serviceState(); +} + +class _machine_learning_serviceState extends State { + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + return Future.value(false); + }, + child: Scaffold( + backgroundColor: Colors.black, + appBar: BackCustomAppBar( + title: "Machine Learning", + ), + body: Container( + alignment: Alignment.topCenter, + child: Padding( + padding: const EdgeInsets.all(20), + child: ListView( + children: [ + const Text( + "Empowering Success with Revolutionary Machine Learning Solutions", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + const Text( + "Welcome to Future Insight, your premier destination for cutting-edge machine learning solutions. Our expert team of data scientists, engineers, and designers is dedicated to delivering tailored services that harness the power of artificial intelligence. From advanced model development to algorithm optimization, we provide innovative solutions to drive your business forward. Partner with us to unlock the transformative potential of machine learning and stay ahead of the competition.", + textAlign: TextAlign.justify, + style: CustomTextStyles.regularTextStyle, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + const Text( + "Flexible Pricing: Choose the Plan That Fits Your Budget", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: CustomTextStyles.defaultSpacing.vertical), + CardService( + cardTitle: "Normal Package", + bulletPoints: const [ + "Unleash the Power of Data Creation", + "Generate Diverse and Representative Datasets", + "Custom Data Creation Made Easy", + "Documentation" + ], + buttonLabels: const ["Select Package", "Terms & Conditions"], + onButton1Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const select_Package(), + transitionDuration: const Duration( + milliseconds: + 300), // Set the total animation duration + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the first button tap + }, + onButton2Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const TermConditions(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the second button tap + }, + ), + const SizedBox(height: 15), + CardService( + cardTitle: "Advanced Package", + bulletPoints: const [ + "Seamlessly Train and Test Your Models", + "Empower your ML Journey", + "Achieve Accurate Results with Your Own Data", + "Alteration to the Model", + "One Video Call Support", + "Documentation" + // Add more bullet points as needed + ], + buttonLabels: const ["Select Package", "Terms & Conditions"], + onButton1Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const select_Package(), + transitionDuration: const Duration( + milliseconds: + 300), // Set the total animation duration + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the first button tap + }, + onButton2Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const TermConditions(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the second button tap + }, + ), + const SizedBox(height: 15), + CardService( + cardTitle: "Premium Package", + bulletPoints: const [ + "Next-Level Model Training and Testing Experience", + "Intuitive GUI and Powerful APIs for Your Models", + "2 Alteration to ML Model", + "2 Video Call Support", + "Documentation" + ], + buttonLabels: const ["Select Package", "Terms & Conditions"], + onButton1Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const select_Package(), + transitionDuration: const Duration( + milliseconds: + 300), // Set the total animation duration + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + // Handle the first button tap + }, + onButton2Pressed: () { + Navigator.push( + context, + PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => + const TermConditions(), + transitionDuration: const Duration(milliseconds: 300), + transitionsBuilder: + (context, animation, secondaryAnimation, child) { + const begin = Offset(1.0, 0.0); + const end = Offset.zero; + var curve = + Curves.easeInOut; // Adjust the curve as needed + var tween = Tween(begin: begin, end: end) + .chain(CurveTween(curve: curve)); + var offsetAnimation = animation.drive(tween); + return SlideTransition( + position: offsetAnimation, + child: child, + ); + }, + ), + ); + }, + ) + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/services/Web.dart b/lib/src/pages/services/web_dev.dart similarity index 81% rename from lib/pages/services/Web.dart rename to lib/src/pages/services/web_dev.dart index 5f4a583..46f8b9b 100644 --- a/lib/pages/services/Web.dart +++ b/lib/src/pages/services/web_dev.dart @@ -1,7 +1,7 @@ // ignore: file_names import 'package:flutter/material.dart'; -import 'package:future_insight/widgets/WebViewWidget.dart'; -import 'package:future_insight/widgets/AppBar/appbarbackbutton.dart'; +import 'package:future_insight/src/widgets/WebViewWidget.dart'; +import 'package:future_insight/src/widgets/AppBar/appbarbackbutton.dart'; // ignore: camel_case_types class Web_Devlopment extends StatelessWidget { diff --git a/lib/pages/splash_screen.dart b/lib/src/pages/splash_screen.dart similarity index 96% rename from lib/pages/splash_screen.dart rename to lib/src/pages/splash_screen.dart index 40cd2c0..c5042aa 100644 --- a/lib/pages/splash_screen.dart +++ b/lib/src/pages/splash_screen.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:flutter/material.dart'; -import 'package:future_insight/pages/Bottom_Nav.dart'; +import 'package:future_insight/src/pages/Bottom_Nav.dart'; import 'package:lottie/lottie.dart'; import 'package:page_transition/page_transition.dart'; diff --git a/lib/src/pages/submit-task.dart b/lib/src/pages/submit-task.dart new file mode 100644 index 0000000..bc77aad --- /dev/null +++ b/lib/src/pages/submit-task.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +class select_Package extends StatefulWidget { + const select_Package({super.key}); + + @override + State createState() => _select_PackageState(); +} + +class _select_PackageState extends State { + @override + Widget build(BuildContext context) { + return const Placeholder(); + } +} diff --git a/lib/src/pages/terms-&-condition.dart b/lib/src/pages/terms-&-condition.dart new file mode 100644 index 0000000..ad61386 --- /dev/null +++ b/lib/src/pages/terms-&-condition.dart @@ -0,0 +1,93 @@ +// ignore: file_names +import 'package:flutter/material.dart'; +import 'package:future_insight/src/widgets/AppBar/appbarbackbutton.dart'; +import 'package:future_insight/src/widgets/BulletPoint.dart'; +import 'package:future_insight/src/widgets/orderlist.dart'; +import 'package:future_insight/src/widgets/text_style_service.dart'; + +class TermConditions extends StatefulWidget { + const TermConditions({Key? key}) : super(key: key); + + @override + State createState() => _TermConditionsState(); +} + +class _TermConditionsState extends State { + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + return Future.value(false); + }, + child: Scaffold( + backgroundColor: Colors.black, + appBar: BackCustomAppBar( + title: "Terms & Conditions", + ), + body: Container( + child: Padding( + padding: const EdgeInsets.all(20), + child: ListView( + children: const [ + Text( + "Terms of Use- Assignment Help Services", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: 20), + BulletPoint( + text: + "The Terms of Use, as modified from time to time, are a kind of binding contract/agreement between Assignment Help Services (We) and the User (you), who can be anyone among the parents, guardians or students and any other individual who are willing to use the services of our website."), + BulletPoint( + text: + "It is the sole responsibility of our user (you) to check out and agree to our Terms and Conditions, including Privacy Policy, before getting involved in the utilization of our services through our website or getting engaged in any features, software, applications, software of our website. Once you decide to make the use of any portion of our website (collectively, known as The “Service”), it means that you agree to our Terms of Use. Please don’t use our Service if you have any doubts or disagree to our Terms of Use."), + SizedBox(height: 20), + Text( + "Description of Service; Minimum Requirement Needs to Be Fulfilled", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + SizedBox(height: 20), + Padding( + padding: EdgeInsets.all(20.0), + child: Text( + "Before using any of our services, users (parents, guardians or students) must agree with the conditions mentioned below:", + style: CustomTextStyles.regularTextStyle, + ), + ), + OrderedListItem(1, + "If you are a student you should be at least 10 years of old. Being our user, it is important for you to be mature enough to your decision on your own while entering into any of our contracts."), + OrderedListItem(2, + "The user engages into this contract on his/her own desires without being forced by anyone else."), + OrderedListItem(3, + "Once an individual shows his/her interest in any of our products seen at our website on behalf of any entity or an organization, then he or she would take the complete responsibility of agreeing with all our Terms of conditions on behalf of that entity or an organization."), + OrderedListItem(4, + "That user/individual must have a full understanding of Future Insight Contact Page’ Terms of Use, which are mentioned here at our website (future-insight.blog). He or she is highly advisable to read out the information mentioned on the page of Terms of Use before getting into our contract."), + SizedBox(height: 10), + Text( + "Changes/Modifications to Service", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + Padding( + padding: EdgeInsets.all(20.0), + child: Text( + "We at Future Insight also have the full authority to discontinue the service of our users (you) or stop them from accessing to our website without giving them any prior notice regarding the same. Our company has all the needful rights to make any changes or remove anything from the part of our services whenever we want, and, in this regard, we are not liable to inform our users by sending any kind of notice.", + textAlign: TextAlign.justify, + style: CustomTextStyles.regularTextStyle, + ), + ), + SizedBox(height: 10), + Text( + "Changes/Modifications to Service", + style: CustomTextStyles.centeredTitleStyle, + textAlign: TextAlign.center, + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/widgets/AppBar/appbar.dart b/lib/src/widgets/AppBar/appbar.dart similarity index 100% rename from lib/widgets/AppBar/appbar.dart rename to lib/src/widgets/AppBar/appbar.dart diff --git a/lib/widgets/AppBar/appbarbackbutton.dart b/lib/src/widgets/AppBar/appbarbackbutton.dart similarity index 100% rename from lib/widgets/AppBar/appbarbackbutton.dart rename to lib/src/widgets/AppBar/appbarbackbutton.dart diff --git a/lib/src/widgets/BulletPoint.dart b/lib/src/widgets/BulletPoint.dart new file mode 100644 index 0000000..ece408a --- /dev/null +++ b/lib/src/widgets/BulletPoint.dart @@ -0,0 +1,30 @@ +// ignore: file_names +import 'package:flutter/material.dart'; + +class BulletPoint extends StatelessWidget { + final String text; + + const BulletPoint({super.key, required this.text}); + + @override + Widget build(BuildContext context) { + return ListTile( + contentPadding: const EdgeInsets.symmetric( + horizontal: 0.0), // Adjust the padding here + leading: const Icon( + Icons.circle, // You can use a different bullet point icon if desired + color: Colors.orange, + size: 10, // Adjust the size of the bullet point + ), + title: Text( + text, + textAlign: TextAlign.justify, + style: const TextStyle( + color: Colors.white, + fontSize: 18, + fontWeight: FontWeight.w200, + ), + ), + ); + } +} diff --git a/lib/widgets/WebViewWidget.dart b/lib/src/widgets/WebViewWidget.dart similarity index 100% rename from lib/widgets/WebViewWidget.dart rename to lib/src/widgets/WebViewWidget.dart diff --git a/lib/src/widgets/orderlist.dart b/lib/src/widgets/orderlist.dart new file mode 100644 index 0000000..c9aaefa --- /dev/null +++ b/lib/src/widgets/orderlist.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; + +class OrderedListItem extends StatelessWidget { + final int number; + final String text; + + const OrderedListItem(this.number, this.text, {Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric( + vertical: 8.0, horizontal: 20.0), // Adjust padding as needed + child: ListTile( + title: Text( + '$number. $text', // Displays the item number and text + textAlign: TextAlign.justify, + style: const TextStyle( + fontSize: 18.0, + fontWeight: FontWeight.w200, + color: Colors.white, + ), + ), + ), + ); + } +} diff --git a/lib/widgets/service-boxes.dart b/lib/src/widgets/service-boxes.dart similarity index 100% rename from lib/widgets/service-boxes.dart rename to lib/src/widgets/service-boxes.dart diff --git a/lib/src/widgets/services-cards.dart b/lib/src/widgets/services-cards.dart new file mode 100644 index 0000000..1be29f8 --- /dev/null +++ b/lib/src/widgets/services-cards.dart @@ -0,0 +1,93 @@ +// ignore: file_names +import 'package:flutter/material.dart'; + +class CardService extends StatelessWidget { + final String cardTitle; + final List bulletPoints; + final List buttonLabels; + final VoidCallback onButton1Pressed; + final VoidCallback onButton2Pressed; + + const CardService({ + super.key, + required this.cardTitle, + required this.bulletPoints, + required this.buttonLabels, + required this.onButton1Pressed, + required this.onButton2Pressed, + }); + + @override + Widget build(BuildContext context) { + return Card( + color: Colors.white, + shadowColor: Colors.white, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(10)), + ), + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + cardTitle, + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: Colors.black, + ), + ), + const SizedBox(height: 10), + // Bullet points + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: + bulletPoints.map((point) => buildBulletPoint(point)).toList(), + ), + const SizedBox( + height: 10), // Add spacing between bullet points and buttons + + // Buttons + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + ElevatedButton( + onPressed: onButton1Pressed, + child: Text(buttonLabels[0]), + ), + ElevatedButton( + onPressed: onButton2Pressed, + child: Text(buttonLabels[1]), + ), + ], + ), + ], + ), + ), + ); + } + + Widget buildBulletPoint(String text) { + return RichText( + text: TextSpan( + children: [ + const WidgetSpan( + child: Padding( + padding: EdgeInsets.only(right: 8.0), + child: Icon( + Icons.check_circle, + color: Colors.orange, + size: 18, + ), + ), + ), + TextSpan( + text: '$text\n', + style: const TextStyle(color: Colors.black, fontSize: 18), + ), + ], + ), + ); + } +} diff --git a/lib/src/widgets/text_style_service.dart b/lib/src/widgets/text_style_service.dart new file mode 100644 index 0000000..bf6cfac --- /dev/null +++ b/lib/src/widgets/text_style_service.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; + +class CustomTextStyles { + static const TextStyle titleStyle = TextStyle( + fontSize: 29, + height: 1, + fontWeight: FontWeight.bold, + decorationThickness: 1, + decoration: TextDecoration.underline, + color: Colors.white, + ); + + static const TextStyle regularTextStyle = TextStyle( + fontSize: 18, + height: 1, + fontWeight: FontWeight.w200, + color: Colors.white, + ); + + static const TextStyle centeredTitleStyle = TextStyle( + fontSize: 29, + height: 1, + fontWeight: FontWeight.bold, + decorationThickness: 1, + decoration: TextDecoration.underline, + color: Colors.white, + ); + + static const EdgeInsets defaultSpacing = EdgeInsets.symmetric(vertical: 20.0); +} diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index 3b10db9..0000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:future_insight/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -}