diff --git a/assets/images/illustro/phone.png b/assets/images/illustro/phone.png new file mode 100644 index 0000000..b5458d5 Binary files /dev/null and b/assets/images/illustro/phone.png differ diff --git a/lib/data.dart b/lib/data.dart index bbe2241..dbc34f4 100644 --- a/lib/data.dart +++ b/lib/data.dart @@ -2,21 +2,15 @@ import 'package:portfolio_flutter/screens/routes/leaderboard/leaderboard_screen. import 'package:portfolio_flutter/screens/routes/parallax.dart'; import 'package:portfolio_flutter/screens/routes/quiz/quiz_play_screen.dart'; import 'package:portfolio_flutter/screens/routes/slot_machine.dart'; +import 'package:portfolio_flutter/utils/assets.dart'; final List projectsDATA = [ { "title": "Qlan", "subtitle": "The Gamer's Social Network", - "screenshots": [ - "assets/images/qlan/4.jpg", - "assets/images/qlan/5.jpg", - "assets/images/qlan/6.jpg", - "assets/images/qlan/7.jpg", - "assets/images/qlan/8.jpg" - ], - "thumbnail": "assets/images/qlan/thumbnail/4_small.png", - "thumbnail_web": "assets/images/qlan/thumbnail/qlan_web_thumb.png", - "tags": ["Flutter"], + "thumbnail": qlanThumb, + "thumbnail_web": qlanThumbWeb, + "tags": ["Flutter, Firebase, Admob"], "link": "https://play.google.com/store/apps/details?id=com.qlan", "description": "Qlan is a social networking and chat communication app dedicated to gamers. It is suited for everyone who is looking to collaborate or network with other gamers through chat. Users can create custom profiles, sync their in-game statistics, access AI based matchmaking, build squads, share gaming content and much more.\n**Key Responsibilities:**\n\n - Full application setup.\n - Mentorship over the duration of development.", @@ -25,8 +19,7 @@ final List projectsDATA = [ { "title": "ThinkRight", "subtitle": "Meditation & Sleep", - "screenshots": [], - "thumbnail": "assets/images/thinkright/thumbnail/phone.png", + "thumbnail": thinkRightThumb, "tags": ["Flutter"], "link": "https://play.google.com/store/apps/details?id=in.publicam.thinkrightme&hl=en_IN", @@ -37,14 +30,7 @@ final List projectsDATA = [ { "title": "Infoflight", "subtitle": "Resource Management and Resume Builder Web App", - "screenshots": [ - "assets/images/infoflight/1.png", - "assets/images/infoflight/2.png", - "assets/images/infoflight/3.png", - "assets/images/infoflight/4.png", - "assets/images/infoflight/5.png" - ], - "thumbnail_web": "assets/images/infoflight/thumbnail/thumb.png", + "thumbnail_web": infoFlightThumbWeb, "tags": ["Flutter", "Firebase"], "description": "Infoflight is an In-house webapp for managing resources. It manages kinds of resource such as technology content and tutorials, Project documentation, Resume builder and employee project allocation.\nResumes can be sent to clients and can be modified at runtime.Content display is achieved using markdown.\n**Key Responsibilities:**\n\n- Full application setup with flutter and firebase.\n- UI creation.\n- Mentorship over the duration of development.\n", @@ -53,61 +39,61 @@ final List projectsDATA = [ { "title": "TRP ", "subtitle": "Inventory Management App", - // "screenshots": [ - // "assets/images/TRP/1.png", - // "assets/images/TRP/2.png", - // "assets/images/TRP/3.png", - // "assets/images/TRP/4.png" - // ], - "thumbnail": "assets/images/TRP/thumbnail/phone.png", + "thumbnail": tRPThumb, "tags": ["Flutter", "Firebase", "CSV"], "description": - "Inventory management app for a clothing store.It Manages to store all the stock, calculate profit or loss, generate invoices and sales csv data.\n It also has a feature of custom billing calculator.", + "Inventory management app for a clothing store. It Manages to store all the stock, calculate profit or loss, generate invoices and sales csv data.\n It also has a feature of custom billing calculator.", "year": "2020" }, { "title": "Illustro-AI", "subtitle": "Convert portrait images into vector art", - // "screenshots": [ - - // ], - // "thumbnail": [ - - // ], - "tags": ["Flutter"], + "thumbnail": illustroThumb, + "tags": ["Flutter, Flask, Leonardo AI, AWS, Firebase, Admob"], "link": "https://play.google.com/store/apps/details?id=com.rattler.illustro&hl=en", - "description": "", + "description": + """Illustro is creative app that uses third party image generation services.User's face is taken as input and processed through AI model to create stunning vector illustrations of given input. + \n**Key Responsibilities:**\n + \n - Front-End setup using flutter. + \n - Back-End setup using flask and Leonardo Api integration. + \n - Deployment on AWS ec2 using github actions. + """, "year": "2023" } ]; +// _______________________________________________________________________ + final List showcaseLeftDATA = [ { "title": "Landscape Parallax", "subtitle": "The Parallax effect from package: parallax", "routeName": Parallax.routeName, - "image": "showcase_banner/parallax_logo.png" + "image": parallax }, { "title": "Slot Machine", "subtitle": "The Parallax effect", "routeName": SlotMachine.routeName, - "image": "showcase_banner/slotmachine.png" + "image": slotmachine }, { "title": "Arcade Quiz", "subtitle": "Quiz", "routeName": QuizPlayScreen.routeName, - "image": "showcase_banner/quiz.png" + "image": quiz }, { "title": "Leaderboard", "subtitle": "leaderboard", "routeName": LeaderBoardScreen.routeName, - "image": "showcase_banner/leaderboard.png" + "image": leaderboard }, ]; + +// _______________________________________________________________________ + final List> quizQuesstion = [ { "Question_id": 0, @@ -139,6 +125,8 @@ final List> quizQuesstion = [ }, ]; +// _______________________________________________________________________ + List scoreList = [ { "name": "Vidya Chaudhry", diff --git a/lib/screens/pages/home.dart b/lib/screens/pages/home.dart index e870f96..bf68dc7 100644 --- a/lib/screens/pages/home.dart +++ b/lib/screens/pages/home.dart @@ -9,7 +9,7 @@ import 'package:portfolio_flutter/provider/quiz_provider.dart'; import 'package:portfolio_flutter/screens/routes/projects.dart'; import 'package:portfolio_flutter/screens/routes/showcase.dart'; import 'package:portfolio_flutter/theme.dart'; -import 'package:portfolio_flutter/utils/strings.dart'; +import 'package:portfolio_flutter/utils/assets.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -41,6 +41,12 @@ class _HomeState extends State { slotMachineBall, quizBgBlur, quizBg, + qlanThumb, + qlanThumbWeb, + thinkRightThumb, + infoFlightThumbWeb, + tRPThumb, + illustroThumb, ]) { precacheImage( AssetImage(e), diff --git a/lib/screens/routes/components/mockup_card.dart b/lib/screens/routes/components/mockup_card.dart index ecb07e7..862f1c9 100644 --- a/lib/screens/routes/components/mockup_card.dart +++ b/lib/screens/routes/components/mockup_card.dart @@ -1,6 +1,5 @@ // ignore_for_file: public_member_api_docs, sort_constructors_first import 'dart:async'; -import 'dart:developer'; import 'dart:math' as math; import 'package:flutter/foundation.dart'; @@ -29,8 +28,9 @@ class _MockupCardState extends State { String data = ''; double hoverSensitivity = 0.3; + // double hoverSensitivity = 0.3; Matrix4 calculateTiltMatrix() { - Matrix4 tiltMatrix = Matrix4.identity(); + Matrix4 tiltMatrix = Matrix4.identity()..translate(0.0, 0.0, -1.0 / 0.2); tiltMatrix.rotateX(-tiltY); tiltMatrix.rotateY(-tiltX); tiltMatrix.rotateZ(tiltX * 0.1); @@ -41,9 +41,10 @@ class _MockupCardState extends State { StreamSubscription? _streamSubscription; + @override void initState() { super.initState(); - if (kIsWeb) { + if (!kIsWeb) { _streamSubscription = gyroscopeEvents.listen((event) { // Process gyroscope data (x, y, z values) setState(() { @@ -67,17 +68,20 @@ class _MockupCardState extends State { super.dispose(); _streamSubscription?.cancel(); // Cancel subscription when done } + @override Widget build(BuildContext context) { return GestureDetector( onLongPressStart: (details) { setState(() { - Provider.of(context,listen:false).updatesSrollOffAndTiltOn=true; + Provider.of(context, listen: false) + .updatesSrollOffAndTiltOn = true; }); }, - onLongPressEnd: (details) { + onLongPressEnd: (details) { setState(() { - Provider.of(context,listen:false).updatesSrollOffAndTiltOn=false; + Provider.of(context, listen: false) + .updatesSrollOffAndTiltOn = false; }); }, onLongPressMoveUpdate: (details) { @@ -97,7 +101,7 @@ class _MockupCardState extends State { math.cos(normalizedY * math.pi); // Adjust PI for desired curve tiltX = value * hoverSensitivity; // Adjust tilt based on value tiltY = (value1 * hoverSensitivity); // Adjust tilt based on value - data = " y:$tiltY"; + data = " y:$tiltX"; }); }, child: MouseRegion( @@ -117,7 +121,7 @@ class _MockupCardState extends State { -math.cos(normalizedY * math.pi); // Adjust PI for desired curve tiltX = value * hoverSensitivity; // Adjust tilt based on value tiltY = (value1 * hoverSensitivity); // Adjust tilt based on value - data = " y:$tiltY"; + data = " x:$tiltY"; }); }, onExit: (event) { @@ -145,6 +149,7 @@ class _MockupCardState extends State { ), height: 50.h, ), + if (kDebugMode) Container(color: Colors.white, child: Text(data)) ], ), ), diff --git a/lib/screens/routes/components/project_description_map.dart b/lib/screens/routes/components/project_description_map.dart index f69e9ad..efa579c 100644 --- a/lib/screens/routes/components/project_description_map.dart +++ b/lib/screens/routes/components/project_description_map.dart @@ -1,10 +1,7 @@ import 'dart:developer'; import 'package:animate_do/animate_do.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; -import 'package:markdown_widget/markdown_helper.dart'; import 'package:markdown_widget/markdown_widget.dart'; import 'package:portfolio_flutter/constants.dart'; import 'package:portfolio_flutter/provider/quiz_provider.dart'; diff --git a/lib/screens/routes/leaderboard/components/top_ranks_animation.dart b/lib/screens/routes/leaderboard/components/top_ranks_animation.dart index 28db928..ad1ee79 100644 --- a/lib/screens/routes/leaderboard/components/top_ranks_animation.dart +++ b/lib/screens/routes/leaderboard/components/top_ranks_animation.dart @@ -1,4 +1,5 @@ import 'package:portfolio_flutter/constants.dart'; +import 'package:responsive_sizer/responsive_sizer.dart'; import 'profile.dart'; import 'package:flutter/material.dart'; @@ -22,7 +23,7 @@ class _TopLeaderBoardAnimationState extends State )..forward(); Animation anima(int rank) { return Tween( - end: Offset(0, 0.3 + (rank / 10)), + end: Offset(0, 0.03.h + (rank / 10)), begin: const Offset(0, 1), ).animate( CurvedAnimation( diff --git a/lib/screens/routes/quiz/components/options_box.dart b/lib/screens/routes/quiz/components/options_box.dart index f4baef4..c7a3340 100644 --- a/lib/screens/routes/quiz/components/options_box.dart +++ b/lib/screens/routes/quiz/components/options_box.dart @@ -8,7 +8,7 @@ import 'package:portfolio_flutter/screens/routes/quiz/components/ques_widget.dar import 'package:portfolio_flutter/screens/routes/quiz/components/quiz_timer.dart'; import 'package:portfolio_flutter/theme.dart'; import 'package:portfolio_flutter/utils/logger.dart'; -import 'package:portfolio_flutter/utils/strings.dart'; +import 'package:portfolio_flutter/utils/assets.dart'; import 'package:provider/provider.dart'; class OptionsBox extends StatefulWidget { diff --git a/lib/screens/routes/quiz/quiz_end_screen.dart b/lib/screens/routes/quiz/quiz_end_screen.dart index 889913c..197835c 100644 --- a/lib/screens/routes/quiz/quiz_end_screen.dart +++ b/lib/screens/routes/quiz/quiz_end_screen.dart @@ -8,7 +8,7 @@ import 'package:portfolio_flutter/screens/routes/quiz/components/ques_widget.dar import 'package:portfolio_flutter/screens/routes/quiz/quiz_bg.dart'; import 'package:portfolio_flutter/theme.dart'; import 'package:portfolio_flutter/utils/logger.dart'; -import 'package:portfolio_flutter/utils/strings.dart'; +import 'package:portfolio_flutter/utils/assets.dart'; import 'package:provider/provider.dart'; class QuizEndScreen extends StatefulWidget { diff --git a/lib/screens/routes/slot_machine.dart b/lib/screens/routes/slot_machine.dart index 0812915..412bcda 100644 --- a/lib/screens/routes/slot_machine.dart +++ b/lib/screens/routes/slot_machine.dart @@ -9,7 +9,7 @@ import 'package:lottie/lottie.dart'; import 'package:portfolio_flutter/constants.dart'; import 'package:portfolio_flutter/screens/routes/components/bulb_widget.dart'; import 'package:portfolio_flutter/theme.dart'; -import 'package:portfolio_flutter/utils/strings.dart'; +import 'package:portfolio_flutter/utils/assets.dart'; import 'package:responsive_sizer/responsive_sizer.dart'; // import 'package:lottie/lottie.dart'; diff --git a/lib/theme.dart b/lib/theme.dart index 2f06c2e..312c0c3 100644 --- a/lib/theme.dart +++ b/lib/theme.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:portfolio_flutter/constants.dart'; Color scaffoldBackground = const Color.fromARGB(255, 245, 245, 245); diff --git a/lib/utils/assets.dart b/lib/utils/assets.dart new file mode 100644 index 0000000..540f2be --- /dev/null +++ b/lib/utils/assets.dart @@ -0,0 +1,24 @@ +const slotMachinBG = 'assets/slotmachine/bg.png'; +const slotMachinPlayButton = 'assets/slotmachine/button.png'; +const slotMachineImage = 'assets/slotmachine/slot.png'; +const slotMachineHandle = 'assets/slotmachine/handle.png'; +const slotMachineBall = 'assets/slotmachine/ball.png'; +const quizBgBlur = 'assets/images/arcade/bg_end.jpg'; +const quizBg = 'assets/images/arcade/quiz_gradient_bg.png'; + +const qlanThumb = "assets/images/qlan/thumbnail/4_small.png"; +const qlanThumbWeb = "assets/images/qlan/thumbnail/qlan_web_thumb.png"; + +const thinkRightThumb = "assets/images/thinkright/thumbnail/phone.png"; + +const infoFlightThumbWeb = "assets/images/infoflight/thumbnail/thumb.png"; + +const tRPThumb = "assets/images/TRP/thumbnail/phone.png"; + +const illustroThumb = "assets/images/illustro/phone.png"; + +const parallax = "showcase_banner/parallax_logo.png"; +const slotmachine = "showcase_banner/slotmachine.png"; +const quiz = "showcase_banner/quiz.png"; +const leaderboard = "showcase_banner/leaderboard.png"; + diff --git a/lib/utils/strings.dart b/lib/utils/strings.dart deleted file mode 100644 index 2ac9086..0000000 --- a/lib/utils/strings.dart +++ /dev/null @@ -1,7 +0,0 @@ -const slotMachinBG = 'assets/slotmachine/bg.png'; -const slotMachinPlayButton = 'assets/slotmachine/button.png'; -const slotMachineImage = 'assets/slotmachine/slot.png'; -const slotMachineHandle = 'assets/slotmachine/handle.png'; -const slotMachineBall = 'assets/slotmachine/ball.png'; -const quizBgBlur = 'assets/images/arcade/bg_end.jpg'; -const quizBg = 'assets/images/arcade/quiz_gradient_bg.png'; \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index b8235e4..1ac8f49 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -88,6 +88,7 @@ flutter: - assets/images/infoflight/thumbnail/ - assets/images/thinkright/ - assets/images/arcade/ + - assets/images/illustro/ - assets/images/thinkright/thumbnail/ - assets/images/TRP/ - assets/images/TRP/thumbnail/ diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..56046f5 --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,30 @@ +// 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:portfolio_flutter/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); + }); +}