From 71dd63ef72fcddf8dba7befc3884fe5a65a3ca11 Mon Sep 17 00:00:00 2001 From: Mahmoud Hafez Eltarqi <98850036+x-brymo@users.noreply.github.com> Date: Wed, 3 Jan 2024 02:00:57 +0200 Subject: [PATCH] update-v0.3.0 --- .flutter-plugins-dependencies | 2 +- asset/R.png | Bin 0 -> 25664 bytes lib/design/web/carousel/carousel_widget.dart | 72 ++++++ lib/design/web/footer/footer.dart | 38 +++ lib/design/web/footer/footer_view.dart | 51 ++++ .../web/menu-board/custom_menu_board.dart | 237 ++++++++++++++++++ lib/extensions/theme.dart | 8 + lib/ui_package.dart | 5 +- pubspec.yaml | 3 +- 9 files changed, 412 insertions(+), 4 deletions(-) create mode 100644 asset/R.png create mode 100644 lib/design/web/carousel/carousel_widget.dart create mode 100644 lib/design/web/footer/footer.dart create mode 100644 lib/design/web/footer/footer_view.dart create mode 100644 lib/design/web/menu-board/custom_menu_board.dart diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies index f8d173b..bb893c3 100644 --- a/.flutter-plugins-dependencies +++ b/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"firebase_auth","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.15.3\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"google_sign_in_ios","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_ios-5.6.5\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.4\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"android":[{"name":"firebase_auth","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.15.3\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"google_sign_in_android","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_android-6.1.20\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_android-2.2.1\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"firebase_auth","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.15.3\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.4\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_linux-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_linux-2.3.2\\\\","native_build":false,"dependencies":["path_provider_linux"]}],"windows":[{"name":"firebase_auth","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.15.3\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"path_provider_windows","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_windows-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_windows","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_windows-2.3.2\\\\","native_build":false,"dependencies":["path_provider_windows"]}],"web":[{"name":"firebase_auth_web","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth_web-5.8.12\\\\","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core_web-2.10.0\\\\","dependencies":[]},{"name":"google_sign_in_web","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_web-0.12.2+1\\\\","dependencies":[]},{"name":"shared_preferences_web","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_web-2.2.1\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_android","google_sign_in_ios","google_sign_in_web"]},{"name":"google_sign_in_android","dependencies":[]},{"name":"google_sign_in_ios","dependencies":[]},{"name":"google_sign_in_web","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2024-01-02 00:05:18.798035","version":"3.13.6"} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"firebase_auth","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.15.3\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"google_sign_in_ios","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_ios-5.6.5\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.4\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"android":[{"name":"firebase_auth","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.15.3\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"google_sign_in_android","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_android-6.1.20\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_android-2.2.1\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"firebase_auth","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.15.3\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.4\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_linux-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_linux-2.3.2\\\\","native_build":false,"dependencies":["path_provider_linux"]}],"windows":[{"name":"firebase_auth","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.15.3\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.24.2\\\\","native_build":true,"dependencies":[]},{"name":"path_provider_windows","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_windows-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_windows","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_windows-2.3.2\\\\","native_build":false,"dependencies":["path_provider_windows"]}],"web":[{"name":"firebase_auth_web","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth_web-5.8.12\\\\","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core_web-2.10.0\\\\","dependencies":[]},{"name":"google_sign_in_web","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_web-0.12.2+1\\\\","dependencies":[]},{"name":"shared_preferences_web","path":"C:\\\\Users\\\\eltanany 01007675193\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_web-2.2.1\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_android","google_sign_in_ios","google_sign_in_web"]},{"name":"google_sign_in_android","dependencies":[]},{"name":"google_sign_in_ios","dependencies":[]},{"name":"google_sign_in_web","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2024-01-02 19:37:56.296453","version":"3.13.6"} \ No newline at end of file diff --git a/asset/R.png b/asset/R.png new file mode 100644 index 0000000000000000000000000000000000000000..a541c69ef9921a236928e19b61ceae014f2733e8 GIT binary patch literal 25664 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%0DNYE}PoSOM7P=8gX<;C=b-VMp7 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 literal 0 HcmV?d00001 diff --git a/lib/design/web/carousel/carousel_widget.dart b/lib/design/web/carousel/carousel_widget.dart new file mode 100644 index 0000000..f255477 --- /dev/null +++ b/lib/design/web/carousel/carousel_widget.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; + +class CustomCarousel extends StatefulWidget { + final List items; + const CustomCarousel({Key? key, required this.items}) : super(key: key); + + @override + _CustomCarouselState createState() => _CustomCarouselState(); +} + +class _CustomCarouselState extends State { + int _currentItemIndex = 0; + + void _previousItem() { + setState(() { + _currentItemIndex = _currentItemIndex - 1; + if (_currentItemIndex < 0) { + _currentItemIndex = widget.items.length - 1; + } + }); + } + + void _nextItem() { + setState(() { + _currentItemIndex = _currentItemIndex + 1; + if (_currentItemIndex >= widget.items.length) { + _currentItemIndex = 0; + } + }); + } + + @override + Widget build(BuildContext context) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + PageView( + children: widget.items.map((item) { + return Container( + width: MediaQuery.of(context).size.width, + height: 200, + decoration: const BoxDecoration( + color: Colors.blue, + ), + child: Center( + child: Text(item), + ), + ); + }).toList(), + onPageChanged: (newIndex) { + setState(() { + _currentItemIndex = newIndex; + }); + }, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + TextButton( + onPressed: _previousItem, + child: const Text('Previous'), + ), + TextButton( + onPressed: _nextItem, + child: const Text('Next'), + ), + ], + ), + ], + ); + } +} diff --git a/lib/design/web/footer/footer.dart b/lib/design/web/footer/footer.dart new file mode 100644 index 0000000..22d162b --- /dev/null +++ b/lib/design/web/footer/footer.dart @@ -0,0 +1,38 @@ + +import 'package:flutter/material.dart'; + +class Footer extends StatefulWidget { + //final int flex; + final Color? backgroundColor; + final Alignment? alignment; + //final double padding; + final EdgeInsetsGeometry? padding; + final Widget child; + const Footer( + {super.key, this.backgroundColor, + this.alignment, + this.padding, + required this.child}); + @override + State createState() => FooterState(); +} + +class FooterState extends State