From b146193122abb13d6422cc97427fac5a6bfe3f0d Mon Sep 17 00:00:00 2001 From: hiworin Date: Thu, 25 Dec 2025 10:19:38 +0530 Subject: [PATCH] try --- .github/workflows/build.yml | 51 ++ .gitignore | 47 ++ .metadata | 45 ++ README.md | 16 + analysis_options.yaml | 29 + android/.gitignore | 13 + android/app/build.gradle | 71 ++ android/app/src/debug/AndroidManifest.xml | 8 + android/app/src/main/AndroidManifest.xml | 34 + .../com/example/test_app/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 8 + android/build.gradle | 31 + android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 6 + android/settings.gradle | 11 + assets/data.json | 1 + database.sql | 26 + ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 481 ++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 49 ++ ios/Runner/Runner-Bridging-Header.h | 1 + lib/main.dart | 7 + lib/src/app.dart | 250 ++++++ lib/src/common/constants.dart | 278 +++++++ lib/src/common/utils.dart | 106 +++ lib/src/data/models/_models.dart | 1 + lib/src/data/models/sample.dart | 34 + lib/src/data/repository/_dao.dart | 25 + lib/src/data/repository/sample_dao.dart | 90 +++ lib/src/ui/components/_components.dart | 105 +++ lib/src/ui/components/align2939_fgkc.dart | 35 + lib/src/ui/components/app_bar1048_e0na.dart | 46 ++ lib/src/ui/components/app_bar1219_t88q.dart | 37 + lib/src/ui/components/app_bar2671_1agg.dart | 43 ++ lib/src/ui/components/app_bar2944_rotl.dart | 44 ++ lib/src/ui/components/app_bar3210_xy2e.dart | 44 ++ lib/src/ui/components/app_bar682_1czg.dart | 46 ++ .../ui/components/clip_r_rect1340_ko9q.dart | 32 + lib/src/ui/components/container1042_49si.dart | 157 ++++ lib/src/ui/components/container1044_awqh.dart | 157 ++++ lib/src/ui/components/container1045_jwip.dart | 157 ++++ lib/src/ui/components/container121_di37.dart | 94 +++ lib/src/ui/components/container122_a8w6.dart | 94 +++ lib/src/ui/components/container1915_m39v.dart | 110 +++ lib/src/ui/components/container2930_2rhj.dart | 65 ++ lib/src/ui/components/container2930_qyoo.dart | 65 ++ lib/src/ui/components/container2933_cvn3.dart | 100 +++ lib/src/ui/components/container2934_5anc.dart | 99 +++ lib/src/ui/components/container676_u4q2.dart | 65 ++ lib/src/ui/components/divider1211_akau.dart | 26 + lib/src/ui/components/divider1211_qqok.dart | 26 + lib/src/ui/components/divider1211_quka.dart | 26 + lib/src/ui/components/list_tile1210_3rti.dart | 44 ++ lib/src/ui/components/list_tile1213_y7ek.dart | 44 ++ lib/src/ui/components/list_tile1214_lcq3.dart | 44 ++ .../components/material_button1215_0qfr.dart | 40 + .../components/material_button1217_jwby.dart | 39 + .../components/material_button123_qtis.dart | 41 + .../components/otp_text_field1083_80av.dart | 42 + lib/src/ui/components/padding1247_rcmx.dart | 51 ++ lib/src/ui/components/padding1339_yprp.dart | 47 ++ lib/src/ui/components/padding1341_9kox.dart | 109 +++ lib/src/ui/components/padding1668_943x.dart | 83 ++ lib/src/ui/components/padding1670_gouc.dart | 75 ++ lib/src/ui/components/padding1901_cx9n.dart | 58 ++ lib/src/ui/components/padding1902_1msv.dart | 58 ++ lib/src/ui/components/padding1903_0ffz.dart | 58 ++ lib/src/ui/components/padding1904_tdvf.dart | 58 ++ lib/src/ui/components/padding1_p779.dart | 54 ++ lib/src/ui/components/padding2520_wweb.dart | 55 ++ lib/src/ui/components/padding2522_3z73.dart | 35 + lib/src/ui/components/padding2523_p4he.dart | 76 ++ lib/src/ui/components/padding2654_rvnw.dart | 111 +++ lib/src/ui/components/padding2656_z413.dart | 40 + lib/src/ui/components/padding2657_r22y.dart | 41 + lib/src/ui/components/padding2658_p1zk.dart | 41 + lib/src/ui/components/padding2659_acub.dart | 41 + lib/src/ui/components/padding2660_8c7p.dart | 41 + lib/src/ui/components/padding2661_qzry.dart | 41 + lib/src/ui/components/padding2662_bl2j.dart | 41 + lib/src/ui/components/padding2663_fus1.dart | 95 +++ lib/src/ui/components/padding3261_vzwy.dart | 97 +++ lib/src/ui/components/padding3297_l244.dart | 116 +++ lib/src/ui/components/padding562_b5u2.dart | 63 ++ lib/src/ui/components/padding563_2jw4.dart | 63 ++ lib/src/ui/components/padding564_yzg6.dart | 47 ++ lib/src/ui/components/padding5_pcnl.dart | 54 ++ lib/src/ui/components/padding8_wdx9.dart | 70 ++ .../rating_barbuilder1009_hkzs.dart | 30 + lib/src/ui/components/row1218_c1cc.dart | 97 +++ lib/src/ui/components/row1245_305i.dart | 48 ++ lib/src/ui/components/row1667_tgx9.dart | 88 +++ lib/src/ui/components/row1927_acsm.dart | 71 ++ lib/src/ui/components/row3264_os4l.dart | 71 ++ lib/src/ui/components/row703_gnuw.dart | 99 +++ lib/src/ui/components/stack1906_s1jy.dart | 73 ++ lib/src/ui/components/stack1907_xt28.dart | 73 ++ lib/src/ui/components/stack1908_55ms.dart | 73 ++ lib/src/ui/components/stack1909_yxtc.dart | 73 ++ lib/src/ui/components/stack1910_yg0l.dart | 73 ++ lib/src/ui/components/stack1911_9sq5.dart | 73 ++ lib/src/ui/components/stack1912_btq1.dart | 73 ++ lib/src/ui/components/stack1913_cao7.dart | 73 ++ lib/src/ui/components/stack1914_hvm6.dart | 73 ++ lib/src/ui/components/stack2339_cb92.dart | 116 +++ lib/src/ui/components/stack2554_yhdm.dart | 67 ++ lib/src/ui/components/stack3205_puva.dart | 81 ++ lib/src/ui/components/stack3208_5dv2.dart | 81 ++ lib/src/ui/components/stack3231_qtc6.dart | 58 ++ lib/src/ui/components/stack3231_thkh.dart | 58 ++ lib/src/ui/components/stack3232_hcgu.dart | 58 ++ lib/src/ui/components/stack3232_t74i.dart | 58 ++ lib/src/ui/components/stack3233_o59n.dart | 58 ++ lib/src/ui/components/stack3234_ew9q.dart | 58 ++ lib/src/ui/components/stack3235_ayay.dart | 58 ++ lib/src/ui/components/stack3236_u65x.dart | 58 ++ .../components/switch_list_tile1212_w9oz.dart | 46 ++ lib/src/ui/components/text12_uxqe.dart | 32 + lib/src/ui/components/text1342_x667.dart | 32 + .../ui/components/text_field1926_332s.dart | 66 ++ lib/src/ui/components/text_field561_jhkd.dart | 60 ++ lib/src/ui/components/text_field710_3r6r.dart | 59 ++ lib/src/ui/views/_views.dart | 32 + lib/src/ui/views/about_us.dart | 152 ++++ lib/src/ui/views/audio_article_60rn.dart | 466 ++++++++++++ lib/src/ui/views/bookmark_2rub.dart | 184 +++++ lib/src/ui/views/category_e0b3.dart | 128 ++++ lib/src/ui/views/change_password_5ugn.dart | 326 ++++++++ lib/src/ui/views/chat_n9xm.dart | 716 ++++++++++++++++++ lib/src/ui/views/contact_us_inkn.dart | 312 ++++++++ lib/src/ui/views/dashboard_jvxm.dart | 626 +++++++++++++++ lib/src/ui/views/data_not_found_f1qf.dart | 147 ++++ lib/src/ui/views/detail_dm5h.dart | 216 ++++++ lib/src/ui/views/discover_au68.dart | 496 ++++++++++++ lib/src/ui/views/empty_pin_notes_1l1v.dart | 118 +++ lib/src/ui/views/following_s3l5.dart | 517 +++++++++++++ lib/src/ui/views/forgot_password_xt11.dart | 262 +++++++ lib/src/ui/views/grid_kcdz.dart | 579 ++++++++++++++ lib/src/ui/views/home_cigx.dart | 576 ++++++++++++++ lib/src/ui/views/labels_sxue.dart | 251 ++++++ lib/src/ui/views/list_1eal.dart | 213 ++++++ lib/src/ui/views/login_qayv.dart | 319 ++++++++ lib/src/ui/views/membership_z9ze.dart | 153 ++++ lib/src/ui/views/my_account_tyvz.dart | 109 +++ lib/src/ui/views/news_details_t6nw.dart | 121 +++ lib/src/ui/views/no_data_found_shk8.dart | 133 ++++ .../ui/views/notification_setting_bycd.dart | 157 ++++ lib/src/ui/views/pin_note_list_qn8a.dart | 270 +++++++ lib/src/ui/views/profile_pzn0.dart | 359 +++++++++ lib/src/ui/views/register_obmz.dart | 181 +++++ lib/src/ui/views/review_47su.dart | 268 +++++++ lib/src/ui/views/setting_pano.dart | 411 ++++++++++ lib/src/ui/views/splash_p2g8.dart | 120 +++ lib/src/ui/views/verification_nhug.dart | 180 +++++ lib/src/ui/views/welcome_g72w.dart | 190 +++++ pubspec.lock | 167 ++++ pubspec.yaml | 39 + web/favicon.png | Bin 0 -> 917 bytes web/icons/Icon-192.png | Bin 0 -> 5292 bytes web/icons/Icon-512.png | Bin 0 -> 8252 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes web/index.html | 58 ++ web/manifest.json | 35 + 207 files changed, 17847 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 README.md create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/example/test_app/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 assets/data.json create mode 100644 database.sql create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 lib/main.dart create mode 100644 lib/src/app.dart create mode 100644 lib/src/common/constants.dart create mode 100644 lib/src/common/utils.dart create mode 100644 lib/src/data/models/_models.dart create mode 100644 lib/src/data/models/sample.dart create mode 100644 lib/src/data/repository/_dao.dart create mode 100644 lib/src/data/repository/sample_dao.dart create mode 100644 lib/src/ui/components/_components.dart create mode 100644 lib/src/ui/components/align2939_fgkc.dart create mode 100644 lib/src/ui/components/app_bar1048_e0na.dart create mode 100644 lib/src/ui/components/app_bar1219_t88q.dart create mode 100644 lib/src/ui/components/app_bar2671_1agg.dart create mode 100644 lib/src/ui/components/app_bar2944_rotl.dart create mode 100644 lib/src/ui/components/app_bar3210_xy2e.dart create mode 100644 lib/src/ui/components/app_bar682_1czg.dart create mode 100644 lib/src/ui/components/clip_r_rect1340_ko9q.dart create mode 100644 lib/src/ui/components/container1042_49si.dart create mode 100644 lib/src/ui/components/container1044_awqh.dart create mode 100644 lib/src/ui/components/container1045_jwip.dart create mode 100644 lib/src/ui/components/container121_di37.dart create mode 100644 lib/src/ui/components/container122_a8w6.dart create mode 100644 lib/src/ui/components/container1915_m39v.dart create mode 100644 lib/src/ui/components/container2930_2rhj.dart create mode 100644 lib/src/ui/components/container2930_qyoo.dart create mode 100644 lib/src/ui/components/container2933_cvn3.dart create mode 100644 lib/src/ui/components/container2934_5anc.dart create mode 100644 lib/src/ui/components/container676_u4q2.dart create mode 100644 lib/src/ui/components/divider1211_akau.dart create mode 100644 lib/src/ui/components/divider1211_qqok.dart create mode 100644 lib/src/ui/components/divider1211_quka.dart create mode 100644 lib/src/ui/components/list_tile1210_3rti.dart create mode 100644 lib/src/ui/components/list_tile1213_y7ek.dart create mode 100644 lib/src/ui/components/list_tile1214_lcq3.dart create mode 100644 lib/src/ui/components/material_button1215_0qfr.dart create mode 100644 lib/src/ui/components/material_button1217_jwby.dart create mode 100644 lib/src/ui/components/material_button123_qtis.dart create mode 100644 lib/src/ui/components/otp_text_field1083_80av.dart create mode 100644 lib/src/ui/components/padding1247_rcmx.dart create mode 100644 lib/src/ui/components/padding1339_yprp.dart create mode 100644 lib/src/ui/components/padding1341_9kox.dart create mode 100644 lib/src/ui/components/padding1668_943x.dart create mode 100644 lib/src/ui/components/padding1670_gouc.dart create mode 100644 lib/src/ui/components/padding1901_cx9n.dart create mode 100644 lib/src/ui/components/padding1902_1msv.dart create mode 100644 lib/src/ui/components/padding1903_0ffz.dart create mode 100644 lib/src/ui/components/padding1904_tdvf.dart create mode 100644 lib/src/ui/components/padding1_p779.dart create mode 100644 lib/src/ui/components/padding2520_wweb.dart create mode 100644 lib/src/ui/components/padding2522_3z73.dart create mode 100644 lib/src/ui/components/padding2523_p4he.dart create mode 100644 lib/src/ui/components/padding2654_rvnw.dart create mode 100644 lib/src/ui/components/padding2656_z413.dart create mode 100644 lib/src/ui/components/padding2657_r22y.dart create mode 100644 lib/src/ui/components/padding2658_p1zk.dart create mode 100644 lib/src/ui/components/padding2659_acub.dart create mode 100644 lib/src/ui/components/padding2660_8c7p.dart create mode 100644 lib/src/ui/components/padding2661_qzry.dart create mode 100644 lib/src/ui/components/padding2662_bl2j.dart create mode 100644 lib/src/ui/components/padding2663_fus1.dart create mode 100644 lib/src/ui/components/padding3261_vzwy.dart create mode 100644 lib/src/ui/components/padding3297_l244.dart create mode 100644 lib/src/ui/components/padding562_b5u2.dart create mode 100644 lib/src/ui/components/padding563_2jw4.dart create mode 100644 lib/src/ui/components/padding564_yzg6.dart create mode 100644 lib/src/ui/components/padding5_pcnl.dart create mode 100644 lib/src/ui/components/padding8_wdx9.dart create mode 100644 lib/src/ui/components/rating_barbuilder1009_hkzs.dart create mode 100644 lib/src/ui/components/row1218_c1cc.dart create mode 100644 lib/src/ui/components/row1245_305i.dart create mode 100644 lib/src/ui/components/row1667_tgx9.dart create mode 100644 lib/src/ui/components/row1927_acsm.dart create mode 100644 lib/src/ui/components/row3264_os4l.dart create mode 100644 lib/src/ui/components/row703_gnuw.dart create mode 100644 lib/src/ui/components/stack1906_s1jy.dart create mode 100644 lib/src/ui/components/stack1907_xt28.dart create mode 100644 lib/src/ui/components/stack1908_55ms.dart create mode 100644 lib/src/ui/components/stack1909_yxtc.dart create mode 100644 lib/src/ui/components/stack1910_yg0l.dart create mode 100644 lib/src/ui/components/stack1911_9sq5.dart create mode 100644 lib/src/ui/components/stack1912_btq1.dart create mode 100644 lib/src/ui/components/stack1913_cao7.dart create mode 100644 lib/src/ui/components/stack1914_hvm6.dart create mode 100644 lib/src/ui/components/stack2339_cb92.dart create mode 100644 lib/src/ui/components/stack2554_yhdm.dart create mode 100644 lib/src/ui/components/stack3205_puva.dart create mode 100644 lib/src/ui/components/stack3208_5dv2.dart create mode 100644 lib/src/ui/components/stack3231_qtc6.dart create mode 100644 lib/src/ui/components/stack3231_thkh.dart create mode 100644 lib/src/ui/components/stack3232_hcgu.dart create mode 100644 lib/src/ui/components/stack3232_t74i.dart create mode 100644 lib/src/ui/components/stack3233_o59n.dart create mode 100644 lib/src/ui/components/stack3234_ew9q.dart create mode 100644 lib/src/ui/components/stack3235_ayay.dart create mode 100644 lib/src/ui/components/stack3236_u65x.dart create mode 100644 lib/src/ui/components/switch_list_tile1212_w9oz.dart create mode 100644 lib/src/ui/components/text12_uxqe.dart create mode 100644 lib/src/ui/components/text1342_x667.dart create mode 100644 lib/src/ui/components/text_field1926_332s.dart create mode 100644 lib/src/ui/components/text_field561_jhkd.dart create mode 100644 lib/src/ui/components/text_field710_3r6r.dart create mode 100644 lib/src/ui/views/_views.dart create mode 100644 lib/src/ui/views/about_us.dart create mode 100644 lib/src/ui/views/audio_article_60rn.dart create mode 100644 lib/src/ui/views/bookmark_2rub.dart create mode 100644 lib/src/ui/views/category_e0b3.dart create mode 100644 lib/src/ui/views/change_password_5ugn.dart create mode 100644 lib/src/ui/views/chat_n9xm.dart create mode 100644 lib/src/ui/views/contact_us_inkn.dart create mode 100644 lib/src/ui/views/dashboard_jvxm.dart create mode 100644 lib/src/ui/views/data_not_found_f1qf.dart create mode 100644 lib/src/ui/views/detail_dm5h.dart create mode 100644 lib/src/ui/views/discover_au68.dart create mode 100644 lib/src/ui/views/empty_pin_notes_1l1v.dart create mode 100644 lib/src/ui/views/following_s3l5.dart create mode 100644 lib/src/ui/views/forgot_password_xt11.dart create mode 100644 lib/src/ui/views/grid_kcdz.dart create mode 100644 lib/src/ui/views/home_cigx.dart create mode 100644 lib/src/ui/views/labels_sxue.dart create mode 100644 lib/src/ui/views/list_1eal.dart create mode 100644 lib/src/ui/views/login_qayv.dart create mode 100644 lib/src/ui/views/membership_z9ze.dart create mode 100644 lib/src/ui/views/my_account_tyvz.dart create mode 100644 lib/src/ui/views/news_details_t6nw.dart create mode 100644 lib/src/ui/views/no_data_found_shk8.dart create mode 100644 lib/src/ui/views/notification_setting_bycd.dart create mode 100644 lib/src/ui/views/pin_note_list_qn8a.dart create mode 100644 lib/src/ui/views/profile_pzn0.dart create mode 100644 lib/src/ui/views/register_obmz.dart create mode 100644 lib/src/ui/views/review_47su.dart create mode 100644 lib/src/ui/views/setting_pano.dart create mode 100644 lib/src/ui/views/splash_p2g8.dart create mode 100644 lib/src/ui/views/verification_nhug.dart create mode 100644 lib/src/ui/views/welcome_g72w.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 web/index.html create mode 100644 web/manifest.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..504c660 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,51 @@ +name: Build and deploy +run-name: Food delivery +on: push +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Archive project + run: | + mkdir -p dist/downloads + zip -r dist/downloads/archive.zip . -x '.git/*' -x '.github/*' -x '.gitea/*' -x 'dist/*' -x 'build/*' + + - name: Build project + uses: subosito/flutter-action@v2 + with: + channel: stable + flutter-version: 3.24.5 + - run: flutter pub get + - run: dart run build_runner build --delete-conflicting-outputs + #- run: flutter test + - run: flutter build web --base-href=/b5239596a3/ --release + #- run: flutter build web --base-href=/b5239596a3/ --profile --dart-define=Dart2jsOptimization=O0 + + - name: Create releases + run: | + (cd build/web && zip -r ../../dist/downloads/web.zip .) + echo 'android' >> dist/downloads/app.apk + mv build/web/* dist/ + mkdir b5239596a3 && mv dist/* b5239596a3/ && mv b5239596a3 dist/ + + - name: Setup database + uses: appremix/mysql-deploy-action@v1 + with: + DATABASE_HOST: '${{ vars.db_hostname }}' + DATABASE_PORT: '${{ vars.db_port }}' + DATABASE_NAME: '' + DATABASE_USERNAME: '${{ secrets.db_username }}' + DATABASE_PASSWORD: '${{ secrets.db_password }}' + DATABASE_SCRIPT: 'database.sql' + + - name: Deploy project + uses: SamKirkland/FTP-Deploy-Action@v4.3.4 + with: + server: ${{ vars.ftp_server }} + username: ${{ secrets.ftp_username }} + password: ${{ secrets.ftp_password }} + local-dir: ./dist/ + server-dir: ./ \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..504d1e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,47 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..95f73f5 --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + channel: stable + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: android + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: ios + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: linux + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: macos + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: web + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: windows + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/README.md b/README.md new file mode 100644 index 0000000..4b02abb --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# Food delivery + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..a7acf24 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..5d99765 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..84a9fe4 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.app" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..6893e39 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..1315799 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/test_app/MainActivity.kt b/android/app/src/main/kotlin/com/example/test_app/MainActivity.kt new file mode 100644 index 0000000..dcc24e8 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/test_app/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.test_app + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..1cb7aa2 --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..8403758 --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..360a160 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..5fac679 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..6893e39 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..104a486 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.6.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..46c1f16 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..258d5e1 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..33f0745 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/assets/data.json b/assets/data.json new file mode 100644 index 0000000..95ba9d6 --- /dev/null +++ b/assets/data.json @@ -0,0 +1 @@ +{"sample":[{"date":"2021-09-03","boolean":true,"string":"lorem","integer":1,"decimal":1},{"date":"2022-10-03","boolean":false,"string":"ipsum","integer":2,"decimal":2},{"date":"2023-11-03","boolean":true,"string":"dolor","integer":3,"decimal":3}]} \ No newline at end of file diff --git a/database.sql b/database.sql new file mode 100644 index 0000000..910af39 --- /dev/null +++ b/database.sql @@ -0,0 +1,26 @@ +DROP DATABASE IF EXISTS `b5239596a3`; +CREATE DATABASE `b5239596a3` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; +USE `b5239596a3`; + +SET NAMES utf8; +SET time_zone = '+00:00'; +SET foreign_key_checks = 0; +SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; + +-- DROP TABLE IF EXISTS `sample`; +CREATE TABLE `sample` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `string` varchar(255), + `integer` int, + `decimal` decimal(10,2), + `boolean` bit(1), + `date` datetime, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +INSERT INTO `sample` (`string`, `integer`, `decimal`, `boolean`, `date`) VALUES +('lorem', 1, 1, true, '2021-09-03'), +('ipsum', 2, 2, false, '2022-10-03'), +('dolor', 3, 3, true, '2023-11-03'); + +SET foreign_key_checks = 1; \ No newline at end of file diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..ad322bc --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..80391e4 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 9.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..0b2d479 --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..0b2d479 --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..e568735 --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,481 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.testApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.testApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.testApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..c4b79bd --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..fc6bf80 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..af0309c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..f9cbb25 --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..59c6d39 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..fc6bf80 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..af0309c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..3763683 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..1950fd8 --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 zcmeHN2~<R zh`|8`A_PQ1nSu(UMFx?8j8PC!!VDphaL#`F42fd#7Vlc`zIE4n%Y~eiz4y1j|NDpi z?<@|pSJ-HM`qifhf@m%MamgwK83`XpBA<+azdF#2QsT{X@z0A9Bq>~TVErigKH1~P zRX-!h-f0NJ4Mh++{D}J+K>~~rq}d%o%+4dogzXp7RxX4C>Km5XEI|PAFDmo;DFm6G zzjVoB`@qW98Yl0Kvc-9w09^PrsobmG*Eju^=3f?0o-t$U)TL1B3;sZ^!++3&bGZ!o-*6w?;oOhf z=A+Qb$scV5!RbG+&2S}BQ6YH!FKb0``VVX~T$dzzeSZ$&9=X$3)_7Z{SspSYJ!lGE z7yig_41zpQ)%5dr4ff0rh$@ky3-JLRk&DK)NEIHecf9c*?Z1bUB4%pZjQ7hD!A0r-@NF(^WKdr(LXj|=UE7?gBYGgGQV zidf2`ZT@pzXf7}!NH4q(0IMcxsUGDih(0{kRSez&z?CFA0RVXsVFw3^u=^KMtt95q z43q$b*6#uQDLoiCAF_{RFc{!H^moH_cmll#Fc^KXi{9GDl{>%+3qyfOE5;Zq|6#Hb zp^#1G+z^AXfRKaa9HK;%b3Ux~U@q?xg<2DXP%6k!3E)PA<#4$ui8eDy5|9hA5&{?v z(-;*1%(1~-NTQ`Is1_MGdQ{+i*ccd96ab$R$T3=% zw_KuNF@vI!A>>Y_2pl9L{9h1-C6H8<)J4gKI6{WzGBi<@u3P6hNsXG=bRq5c+z;Gc3VUCe;LIIFDmQAGy+=mRyF++u=drBWV8-^>0yE9N&*05XHZpPlE zxu@?8(ZNy7rm?|<+UNe0Vs6&o?l`Pt>P&WaL~M&#Eh%`rg@Mbb)J&@DA-wheQ>hRV z<(XhigZAT z>=M;URcdCaiO3d^?H<^EiEMDV+7HsTiOhoaMX%P65E<(5xMPJKxf!0u>U~uVqnPN7T!X!o@_gs3Ct1 zlZ_$5QXP4{Aj645wG_SNT&6m|O6~Tsl$q?nK*)(`{J4b=(yb^nOATtF1_aS978$x3 zx>Q@s4i3~IT*+l{@dx~Hst21fR*+5}S1@cf>&8*uLw-0^zK(+OpW?cS-YG1QBZ5q! zgTAgivzoF#`cSz&HL>Ti!!v#?36I1*l^mkrx7Y|K6L#n!-~5=d3;K<;Zqi|gpNUn_ z_^GaQDEQ*jfzh;`j&KXb66fWEk1K7vxQIMQ_#Wu_%3 z4Oeb7FJ`8I>Px;^S?)}2+4D_83gHEq>8qSQY0PVP?o)zAv3K~;R$fnwTmI-=ZLK`= zTm+0h*e+Yfr(IlH3i7gUclNH^!MU>id$Jw>O?2i0Cila#v|twub21@e{S2v}8Z13( zNDrTXZVgris|qYm<0NU(tAPouG!QF4ZNpZPkX~{tVf8xY690JqY1NVdiTtW+NqyRP zZ&;T0ikb8V{wxmFhlLTQ&?OP7 z;(z*<+?J2~z*6asSe7h`$8~Se(@t(#%?BGLVs$p``;CyvcT?7Y!{tIPva$LxCQ&4W z6v#F*);|RXvI%qnoOY&i4S*EL&h%hP3O zLsrFZhv&Hu5tF$Lx!8(hs&?!Kx5&L(fdu}UI5d*wn~A`nPUhG&Rv z2#ixiJdhSF-K2tpVL=)5UkXRuPAFrEW}7mW=uAmtVQ&pGE-&az6@#-(Te^n*lrH^m@X-ftVcwO_#7{WI)5v(?>uC9GG{lcGXYJ~Q8q zbMFl7;t+kV;|;KkBW2!P_o%Czhw&Q(nXlxK9ak&6r5t_KH8#1Mr-*0}2h8R9XNkr zto5-b7P_auqTJb(TJlmJ9xreA=6d=d)CVbYP-r4$hDn5|TIhB>SReMfh&OVLkMk-T zYf%$taLF0OqYF?V{+6Xkn>iX@TuqQ?&cN6UjC9YF&%q{Ut3zv{U2)~$>-3;Dp)*(? zg*$mu8^i=-e#acaj*T$pNowo{xiGEk$%DusaQiS!KjJH96XZ-hXv+jk%ard#fu=@Q z$AM)YWvE^{%tDfK%nD49=PI|wYu}lYVbB#a7wtN^Nml@CE@{Gv7+jo{_V?I*jkdLD zJE|jfdrmVbkfS>rN*+`#l%ZUi5_bMS<>=MBDNlpiSb_tAF|Zy`K7kcp@|d?yaTmB^ zo?(vg;B$vxS|SszusORgDg-*Uitzdi{dUV+glA~R8V(?`3GZIl^egW{a919!j#>f` znL1o_^-b`}xnU0+~KIFLQ)$Q6#ym%)(GYC`^XM*{g zv3AM5$+TtDRs%`2TyR^$(hqE7Y1b&`Jd6dS6B#hDVbJlUXcG3y*439D8MrK!2D~6gn>UD4Imctb z+IvAt0iaW73Iq$K?4}H`7wq6YkTMm`tcktXgK0lKPmh=>h+l}Y+pDtvHnG>uqBA)l zAH6BV4F}v$(o$8Gfo*PB>IuaY1*^*`OTx4|hM8jZ?B6HY;F6p4{`OcZZ(us-RVwDx zUzJrCQlp@mz1ZFiSZ*$yX3c_#h9J;yBE$2g%xjmGF4ca z&yL`nGVs!Zxsh^j6i%$a*I3ZD2SoNT`{D%mU=LKaEwbN(_J5%i-6Va?@*>=3(dQy` zOv%$_9lcy9+(t>qohkuU4r_P=R^6ME+wFu&LA9tw9RA?azGhjrVJKy&8=*qZT5Dr8g--d+S8zAyJ$1HlW3Olryt`yE zFIph~Z6oF&o64rw{>lgZISC6p^CBer9C5G6yq%?8tC+)7*d+ib^?fU!JRFxynRLEZ zj;?PwtS}Ao#9whV@KEmwQgM0TVP{hs>dg(1*DiMUOKHdQGIqa0`yZnHk9mtbPfoLx zo;^V6pKUJ!5#n`w2D&381#5#_t}AlTGEgDz$^;u;-vxDN?^#5!zN9ngytY@oTv!nc zp1Xn8uR$1Z;7vY`-<*?DfPHB;x|GUi_fI9@I9SVRv1)qETbNU_8{5U|(>Du84qP#7 z*l9Y$SgA&wGbj>R1YeT9vYjZuC@|{rajTL0f%N@>3$DFU=`lSPl=Iv;EjuGjBa$Gw zHD-;%YOE@<-!7-Mn`0WuO3oWuL6tB2cpPw~Nvuj|KM@))ixuDK`9;jGMe2d)7gHin zS<>k@!x;!TJEc#HdL#RF(`|4W+H88d4V%zlh(7#{q2d0OQX9*FW^`^_<3r$kabWAB z$9BONo5}*(%kx zOXi-yM_cmB3>inPpI~)duvZykJ@^^aWzQ=eQ&STUa}2uT@lV&WoRzkUoE`rR0)`=l zFT%f|LA9fCw>`enm$p7W^E@U7RNBtsh{_-7vVz3DtB*y#*~(L9+x9*wn8VjWw|Q~q zKFsj1Yl>;}%MG3=PY`$g$_mnyhuV&~O~u~)968$0b2!Jkd;2MtAP#ZDYw9hmK_+M$ zb3pxyYC&|CuAbtiG8HZjj?MZJBFbt`ryf+c1dXFuC z0*ZQhBzNBd*}s6K_G}(|Z_9NDV162#y%WSNe|FTDDhx)K!c(mMJh@h87@8(^YdK$&d*^WQe8Z53 z(|@MRJ$Lk-&ii74MPIs80WsOFZ(NX23oR-?As+*aq6b?~62@fSVmM-_*cb1RzZ)`5$agEiL`-E9s7{GM2?(KNPgK1(+c*|-FKoy}X(D_b#etO|YR z(BGZ)0Ntfv-7R4GHoXp?l5g#*={S1{u-QzxCGng*oWr~@X-5f~RA14b8~B+pLKvr4 zfgL|7I>jlak9>D4=(i(cqYf7#318!OSR=^`xxvI!bBlS??`xxWeg?+|>MxaIdH1U~#1tHu zB{QMR?EGRmQ_l4p6YXJ{o(hh-7Tdm>TAX380TZZZyVkqHNzjUn*_|cb?T? zt;d2s-?B#Mc>T-gvBmQZx(y_cfkXZO~{N zT6rP7SD6g~n9QJ)8F*8uHxTLCAZ{l1Y&?6v)BOJZ)=R-pY=Y=&1}jE7fQ>USS}xP#exo57uND0i*rEk@$;nLvRB@u~s^dwRf?G?_enN@$t* zbL%JO=rV(3Ju8#GqUpeE3l_Wu1lN9Y{D4uaUe`g>zlj$1ER$6S6@{m1!~V|bYkhZA z%CvrDRTkHuajMU8;&RZ&itnC~iYLW4DVkP<$}>#&(`UO>!n)Po;Mt(SY8Yb`AS9lt znbX^i?Oe9r_o=?})IHKHoQGKXsps_SE{hwrg?6dMI|^+$CeC&z@*LuF+P`7LfZ*yr+KN8B4{Nzv<`A(wyR@!|gw{zB6Ha ziwPAYh)oJ(nlqSknu(8g9N&1hu0$vFK$W#mp%>X~AU1ay+EKWcFdif{% z#4!4aoVVJ;ULmkQf!ke2}3hqxLK>eq|-d7Ly7-J9zMpT`?dxo6HdfJA|t)?qPEVBDv z{y_b?4^|YA4%WW0VZd8C(ZgQzRI5(I^)=Ub`Y#MHc@nv0w-DaJAqsbEHDWG8Ia6ju zo-iyr*sq((gEwCC&^TYBWt4_@|81?=B-?#P6NMff(*^re zYqvDuO`K@`mjm_Jd;mW_tP`3$cS?R$jR1ZN09$YO%_iBqh5ftzSpMQQtxKFU=FYmP zeY^jph+g<4>YO;U^O>-NFLn~-RqlHvnZl2yd2A{Yc1G@Ga$d+Q&(f^tnPf+Z7serIU};17+2DU_f4Z z@GaPFut27d?!YiD+QP@)T=77cR9~MK@bd~pY%X(h%L={{OIb8IQmf-!xmZkm8A0Ga zQSWONI17_ru5wpHg3jI@i9D+_Y|pCqVuHJNdHUauTD=R$JcD2K_liQisqG$(sm=k9;L* z!L?*4B~ql7uioSX$zWJ?;q-SWXRFhz2Jt4%fOHA=Bwf|RzhwqdXGr78y$J)LR7&3T zE1WWz*>GPWKZ0%|@%6=fyx)5rzUpI;bCj>3RKzNG_1w$fIFCZ&UR0(7S?g}`&Pg$M zf`SLsz8wK82Vyj7;RyKmY{a8G{2BHG%w!^T|Njr!h9TO2LaP^_f22Q1=l$QiU84ao zHe_#{S6;qrC6w~7{y(hs-?-j?lbOfgH^E=XcSgnwW*eEz{_Z<_Px$?ny*JR5%f>l)FnDQ543{x%ZCiu33$Wg!pQFfT_}?5Q|_VSlIbLC`dpoMXL}9 zHfd9&47Mo(7D231gb+kjFxZHS4-m~7WurTH&doVX2KI5sU4v(sJ1@T9eCIKPjsqSr z)C01LsCxk=72-vXmX}CQD#BD;Cthymh&~=f$Q8nn0J<}ZrusBy4PvRNE}+1ceuj8u z0mW5k8fmgeLnTbWHGwfKA3@PdZxhn|PypR&^p?weGftrtCbjF#+zk_5BJh7;0`#Wr zgDpM_;Ax{jO##IrT`Oz;MvfwGfV$zD#c2xckpcXC6oou4ML~ezCc2EtnsQTB4tWNg z?4bkf;hG7IMfhgNI(FV5Gs4|*GyMTIY0$B=_*mso9Ityq$m^S>15>-?0(zQ<8Qy<_TjHE33(?_M8oaM zyc;NxzRVK@DL6RJnX%U^xW0Gpg(lXp(!uK1v0YgHjs^ZXSQ|m#lV7ip7{`C_J2TxPmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?DuHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ zX$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=O zx-7$a;U><*5L^!%xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#16c{ zJImlNL(npL!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 zcmVjJBgitF5mAp-i>4+KS_oR{|13AP->1TD4=w)g|)JHOx|a2Wk1Va z!k)vP$UcQ#mdj%wNQoaJ!w>jv_6&JPyutpQps?s5dmDQ>`%?Bvj>o<%kYG!YW6H-z zu`g$@mp`;qDR!51QaS}|ZToSuAGcJ7$2HF0z`ln4t!#Yg46>;vGG9N9{V@9z#}6v* zfP?}r6b{*-C*)(S>NECI_E~{QYzN5SXRmVnP<=gzP+_Sp(Aza_hKlZ{C1D&l*(7IKXxQC1Z9#6wx}YrGcn~g%;icdw>T0Rf^w0{ z$_wn1J+C0@!jCV<%Go5LA45e{5gY9PvZp8uM$=1}XDI+9m7!A95L>q>>oe0$nC->i zeexUIvq%Uk<-$>DiDb?!In)lAmtuMWxvWlk`2>4lNuhSsjAf2*2tjT`y;@d}($o)S zn(+W&hJ1p0xy@oxP%AM15->wPLp{H!k)BdBD$toBpJh+crWdsNV)qsHaqLg2_s|Ih z`8E9z{E3sA!}5aKu?T!#enD(wLw?IT?k-yWVHZ8Akz4k5(TZJN^zZgm&zM28sfTD2BYJ|Fde3Xzh;;S` z=GXTnY4Xc)8nYoz6&vF;P7{xRF-{|2Xs5>a5)@BrnQ}I(_x7Cgpx#5&Td^4Q9_FnQ zX5so*;#8-J8#c$OlA&JyPp$LKUhC~-e~Ij!L%uSMu!-VZG7Hx-L{m2DVR2i=GR(_% zCVD!4N`I)&Q5S`?P&fQZ=4#Dgt_v2-DzkT}K(9gF0L(owe-Id$Rc2qZVLqI_M_DyO z9@LC#U28_LU{;wGZ&))}0R2P4MhajKCd^K#D+JJ&JIXZ_p#@+7J9A&P<0kdRujtQ_ zOy>3=C$kgi6$0pW06KaLz!21oOryKM3ZUOWqppndxfH}QpgjEJ`j7Tzn5bk6K&@RA?vl##y z$?V~1E(!wB5rH`>3nc&@)|#<1dN2cMzzm=PGhQ|Yppne(C-Vlt450IXc`J4R0W@I7 zd1e5uW6juvO%ni(WX7BsKx3MLngO7rHO;^R5I~0^nE^9^E_eYLgiR9&KnJ)pBbfno zSVnW$0R+&6jOOsZ82}nJ126+c|%svPo;TeUku<2G7%?$oft zyaO;tVo}(W)VsTUhq^XmFi#2z%-W9a{7mXn{uzivYQ_d6b7VJG{77naW(vHt-uhnY zVN#d!JTqVh(7r-lhtXVU6o})aZbDt_;&wJVGl2FKYFBFpU-#9U)z#(A%=IVnqytR$SY-sO( z($oNE09{D^@OuYPz&w~?9>Fl5`g9u&ecFGhqX=^#fmR=we0CJw+5xna*@oHnkahk+ z9aWeE3v|An+O5%?4fA&$Fgu~H_YmqR!yIU!bFCk4!#pAj%(lI(A5n)n@Id#M)O9Yx zJU9oKy{sRAIV3=5>(s8n{8ryJ!;ho}%pn6hZKTKbqk=&m=f*UnK$zW3YQP*)pw$O* zIfLA^!-bmBl6%d_n$#tP8Zd_(XdA*z*WH|E_yILwjtI~;jK#v-6jMl^?<%Y%`gvpwv&cFb$||^v4D&V=aNy?NGo620jL3VZnA%s zH~I|qPzB~e(;p;b^gJr7Ure#7?8%F0m4vzzPy^^(q4q1OdthF}Fi*RmVZN1OwTsAP zn9CZP`FazX3^kG(KodIZ=Kty8DLTy--UKfa1$6XugS zk%6v$Kmxt6U!YMx0JQ)0qX*{CXwZZk$vEROidEc7=J-1;peNat!vS<3P-FT5po>iE z!l3R+<`#x|+_hw!HjQGV=8!q|76y8L7N8gP3$%0kfush|u0uU^?dKBaeRSBUpOZ0c z62;D&Mdn2}N}xHRFTRI?zRv=>=AjHgH}`2k4WK=#AHB)UFrR-J87GgX*x5fL^W2#d z=(%K8-oZfMO=i{aWRDg=FX}UubM4eotRDcn;OR#{3q=*?3mE3_oJ-~prjhxh%PgQT zyn)Qozaq0@o&|LEgS{Ind4Swsr;b`u185hZPOBLL<`d2%^Yp1?oL)=jnLi;Zo0ZDliTtQ^b5SmfIMe{T==zZkbvn$KTQGlbG8w}s@M3TZnde;1Am46P3juKb zl9GU&3F=q`>j!`?SyH#r@O59%@aMX^rx}Nxe<>NqpUp5=lX1ojGDIR*-D^SDuvCKF z?3$xG(gVUsBERef_YjPFl^rU9EtD{pt z0CXwpN7BN3!8>hajGaTVk-wl=9rxmfWtIhC{mheHgStLi^+Nz12a?4r(fz)?3A%at zMlvQmL<2-R)-@G1wJ0^zQK%mR=r4d{Y3fHp){nWXUL#|CqXl(+v+qDh>FkF9`eWrW zfr^D%LNfOcTNvtx0JXR35J0~Jpi2#P3Q&80w+nqNfc}&G0A~*)lGHKv=^FE+b(37|)zL;KLF>oiGfb(?&1 zV3XRu!Sw>@quKiab%g6jun#oZ%!>V#A%+lNc?q>6+VvyAn=kf_6z^(TZUa4Eelh{{ zqFX-#dY(EV@7l$NE&kv9u9BR8&Ojd#ZGJ6l8_BW}^r?DIS_rU2(XaGOK z225E@kH5Opf+CgD^{y29jD4gHbGf{1MD6ggQ&%>UG4WyPh5q_tb`{@_34B?xfSO*| zZv8!)q;^o-bz`MuxXk*G^}(6)ACb@=Lfs`Hxoh>`Y0NE8QRQ!*p|SH@{r8=%RKd4p z+#Ty^-0kb=-H-O`nAA3_6>2z(D=~Tbs(n8LHxD0`R0_ATFqp-SdY3(bZ3;VUM?J=O zKCNsxsgt@|&nKMC=*+ZqmLHhX1KHbAJs{nGVMs6~TiF%Q)P@>!koa$%oS zjXa=!5>P`vC-a}ln!uH1ooeI&v?=?v7?1n~P(wZ~0>xWxd_Aw;+}9#eULM7M8&E?Y zC-ZLhi3RoM92SXUb-5i-Lmt5_rfjE{6y^+24`y$1lywLyHO!)Boa7438K4#iLe?rh z2O~YGSgFUBH?og*6=r9rme=peP~ah`(8Zt7V)j5!V0KPFf_mebo3z95U8(up$-+EA^9dTRLq>Yl)YMBuch9%=e5B`Vnb>o zt03=kq;k2TgGe4|lGne&zJa~h(UGutjP_zr?a7~#b)@15XNA>Dj(m=gg2Q5V4-$)D|Q9}R#002ovPDHLkV1o7DH3k3x literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..65a94b5 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..497371e --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..bbb83ca --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..d141db5 --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Food delivery + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + food_delivery + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..fae207f --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..2d48b29 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,7 @@ +import 'package:flutter/material.dart'; + +import 'src/app.dart'; + +void main() { + runApp(MyApp()); +} diff --git a/lib/src/app.dart b/lib/src/app.dart new file mode 100644 index 0000000..644db4c --- /dev/null +++ b/lib/src/app.dart @@ -0,0 +1,250 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; + +import 'common/utils.dart'; +import 'data/repository/_dao.dart'; +//import 'data/api/_api.dart'; +import 'data/models/_models.dart'; +import 'ui/views/_views.dart'; + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MultiProvider( + providers: [ + ChangeNotifierProvider(create: (context) => AppController(context)), + // more providers here + ], + child: MaterialApp.router( + title: 'Demo', + debugShowCheckedModeBanner: false, + theme: ThemeData( + primarySwatch: Colors.blue, + brightness: Brightness.light, + visualDensity: VisualDensity.adaptivePlatformDensity, + ), + routerConfig: GoRouter( + initialLocation: '/aboutus', + routes: [ + GoRoute( + path: '/aboutus', + builder: (context, state) { + return AboutUsView(extra: state.extra); + }, + ), + GoRoute( + path: '/audioarticle_60rn', + builder: (context, state) { + return AudioArticle_60rnView(extra: state.extra); + }, + ), + GoRoute( + path: '/bookmark_2rub', + builder: (context, state) { + return Bookmark_2rubView(extra: state.extra); + }, + ), + GoRoute( + path: '/category_e0b3', + builder: (context, state) { + return Category_e0b3View(extra: state.extra); + }, + ), + GoRoute( + path: '/changepassword_5ugn', + builder: (context, state) { + return ChangePassword_5ugnView(extra: state.extra); + }, + ), + GoRoute( + path: '/chat_n9xm', + builder: (context, state) { + return Chat_n9xmView(extra: state.extra); + }, + ), + GoRoute( + path: '/contactus_inkn', + builder: (context, state) { + return ContactUs_inknView(extra: state.extra); + }, + ), + GoRoute( + path: '/dashboard_jvxm', + builder: (context, state) { + return Dashboard_jvxmView(extra: state.extra); + }, + ), + GoRoute( + path: '/datanotfound_f1qf', + builder: (context, state) { + return DataNotFound_f1qfView(extra: state.extra); + }, + ), + GoRoute( + path: '/detail_dm5h', + builder: (context, state) { + return Detail_dm5hView(extra: state.extra); + }, + ), + GoRoute( + path: '/discover_au68', + builder: (context, state) { + return Discover_au68View(extra: state.extra); + }, + ), + GoRoute( + path: '/emptypinnotes_1l1v', + builder: (context, state) { + return EmptyPinNotes_1l1vView(extra: state.extra); + }, + ), + GoRoute( + path: '/following_s3l5', + builder: (context, state) { + return Following_s3l5View(extra: state.extra); + }, + ), + GoRoute( + path: '/forgotpassword_xt11', + builder: (context, state) { + return ForgotPassword_xt11View(extra: state.extra); + }, + ), + GoRoute( + path: '/grid_kcdz', + builder: (context, state) { + return Grid_kcdzView(extra: state.extra); + }, + ), + GoRoute( + path: '/home_cigx', + builder: (context, state) { + return Home_cigxView(extra: state.extra); + }, + ), + GoRoute( + path: '/labels_sxue', + builder: (context, state) { + return Labels_sxueView(extra: state.extra); + }, + ), + GoRoute( + path: '/list_1eal', + builder: (context, state) { + return List_1ealView(extra: state.extra); + }, + ), + GoRoute( + path: '/login_qayv', + builder: (context, state) { + return Login_qayvView(extra: state.extra); + }, + ), + GoRoute( + path: '/membership_z9ze', + builder: (context, state) { + return Membership_z9zeView(extra: state.extra); + }, + ), + GoRoute( + path: '/myaccount_tyvz', + builder: (context, state) { + return MyAccount_tyvzView(extra: state.extra); + }, + ), + GoRoute( + path: '/newsdetails_t6nw', + builder: (context, state) { + return NewsDetails_t6nwView(extra: state.extra); + }, + ), + GoRoute( + path: '/nodatafound_shk8', + builder: (context, state) { + return NoDataFound_shk8View(extra: state.extra); + }, + ), + GoRoute( + path: '/notificationsetting_bycd', + builder: (context, state) { + return NotificationSetting_bycdView(extra: state.extra); + }, + ), + GoRoute( + path: '/pinnotelist_qn8a', + builder: (context, state) { + return PinNoteList_qn8aView(extra: state.extra); + }, + ), + GoRoute( + path: '/profile_pzn0', + builder: (context, state) { + return Profile_pzn0View(extra: state.extra); + }, + ), + GoRoute( + path: '/register_obmz', + builder: (context, state) { + return Register_obmzView(extra: state.extra); + }, + ), + GoRoute( + path: '/review_47su', + builder: (context, state) { + return Review_47suView(extra: state.extra); + }, + ), + GoRoute( + path: '/setting_pano', + builder: (context, state) { + return Setting_panoView(extra: state.extra); + }, + ), + GoRoute( + path: '/splash_p2g8', + builder: (context, state) { + return Splash_p2g8View(extra: state.extra); + }, + ), + GoRoute( + path: '/verification_nhug', + builder: (context, state) { + return Verification_nhugView(extra: state.extra); + }, + ), + GoRoute( + path: '/welcome_g72w', + builder: (context, state) { + return Welcome_g72wView(extra: state.extra); + }, + ), + ], + ), + ), + ); + } +} + +class AppController with ChangeNotifier { + static AppController? _instance; + final BuildContext context; + + // singleton instance + factory AppController(BuildContext context) => + _instance ??= AppController._internal(context); + + AppController._internal(this.context) { + loadData(); + } + + Future loadData() async { + await fillWithMockData(); + } + + void back() { + Navigator.maybePop(context); + } + + final sampleDao = SampleDao(); +} diff --git a/lib/src/common/constants.dart b/lib/src/common/constants.dart new file mode 100644 index 0000000..e8e9c2e --- /dev/null +++ b/lib/src/common/constants.dart @@ -0,0 +1,278 @@ +import 'dart:ui'; + +class Constants { + static const projectId = 'b5239596a3'; + static const apiUrl = 'https://jsonplaceholder.typicode.com'; + static const black = Color(0xFF000000); + static const white = Color(0xFF000000); + static const roboto = 'Roboto'; + static const colour1 = Color(0xFF6200EE); + static const colour2 = Color(0xFF3700B3); + static const colour3 = Color(0xFF03DAC6); + static const colour4 = Color(0xFF018786); + static const colour5 = Color(0xFFB00020); + static const font1 = 'Merriweather'; + static const font2 = 'Raleway'; + /* I18n */ + static const a1QVBVDBF1222_ = 'A1QVBVDBF1222'; + static const aRRahman_ = 'A.R.Rahman'; + static const aSmartRobotFromHeroCompan_ = + 'A smart robot from Hero Company can become a restaurant waiter.'; + static const aboutUs_ = 'About Us'; + static const aboutUs_1 = 'About us'; + static const addToCart_ = 'Add To Cart'; + static const additionalComment_ = 'Additional comment..'; + static const aktaParmar_ = 'Akta Parmar'; + static const allNews_ = 'All News'; + static const alreadyHaveAnAccount_ = 'Already have an account?'; + static const anthony_ = 'Anthony'; + static const anthonysmith12_ = 'anthonysmith12'; + static const anthonysmithgmailcom_ = 'anthonysmith@gmail.com'; + static const appNotification_ = 'App Notification'; + static const art_ = 'Art'; + static const audioArticle_ = 'Audio Article'; + static const background_ = 'Background'; + static const basic_ = 'Basic'; + static const bella_ = 'Bella'; + static const bestDealsOnProducts_ = 'Best Deals On Products'; + static const billedEvery12Month_ = 'Billed every 12 month'; + static const billedEveryMonth_ = 'Billed every month'; + static const bollywoordButter_ = 'Bollywoord Butter'; + static const bookmark_ = 'Bookmark'; + static const byBecomingAMenberYouCan_ = + 'by becoming a menber, you can read on any device, read with no Ads, and offline.'; + static const byJonesHawkins_ = 'by Jones Hawkins'; + static const cLICKTOSPIN_ = 'CLICK TO SPIN'; + static const categories_ = 'Categories'; + static const changePassword_ = 'Change Password'; + static const chap1_ = 'Chap 1'; + static const chap2_ = 'Chap 2'; + static const chap3_ = 'Chap 3'; + static const chooseYourPlan_ = 'Choose your plan'; + static const connection_ = 'Connection'; + static const contact_ = 'Contact'; + static const contestSection_ = 'Contest Section'; + static const continueListening_ = 'Continue Listening'; + static const continue_ = 'Continue'; + static const createConfirmPassword_ = 'Create Confirm Password'; + static const createNewPassword_ = 'Create New Password'; + static const createYourNewPasswordInFl_ = + 'Create your new password in FlutterStudio, Keep in mind and remeber it!.'; + static const creativeGiftsForCapricom_ = 'Creative gifts for Capricom'; + static const darkMode_ = 'Dark Mode'; + static const darshanRaval_ = 'Darshan Raval'; + static const deliveryLocation_ = 'Delivery Location'; + static const design_ = 'Design'; + static const dontHaveAnAccount_ = "Don't have an account?"; + static const doran_ = 'Doran'; + static const ePVariousArtists_ = 'EP.Various Artists'; + static const editPersonalDetails_ = 'Edit Personal Details'; + static const editProfile_ = 'Edit Profile'; + static const email_ = 'Email'; + static const enterConfirmPassword_ = 'Enter Confirm Password'; + static const enterNewPassword_ = 'Enter New Password'; + static const enterText_ = 'Enter Text'; + static const enterTheVerificationCodeWe_ = + 'Enter the verification code we just send you on your email address.'; + static const enterYourEmailForTheVerif_ = + 'Enter your email for the verification process. We will send 4 digits code to your email.'; + static const fASHION_ = 'FASHION'; + static const fLAT20OFF_ = 'FLAT 20% OFF'; + static const fashion_ = 'Fashion'; + static const firstName_ = 'First Name'; + static const follow_ = 'Follow'; + static const following_ = 'Following'; + static const forAnyPressAndMediaInquir_ = + 'For any press and media inquiries please contact'; + static const forgotPassword_ = 'Forgot Password'; + static const fullName_ = 'Full Name'; + static const fultterStudio_ = 'FultterStudio'; + static const gifts_ = 'Gifts'; + static const goBack_ = 'Go Back'; + static const goodMorningGoodMorningGo_ = + 'Good Morning Good Morning Good Morning Good Morning Good Morning Good Morning Good Morning Good Morning'; + static const goodMorningGoodMorningGoo_ = + 'Good Morning Good Morning GoodMorning'; + static const goodMorningGoodMorningGoo_1 = + 'Good Morning Good Morning Good Morning Good Morning Good Morning'; + static const goodMorning_ = 'Good Morning'; + static const helloHowAreYou_ = 'Hello, How are You?'; + static const helloIAmFineAndYou_ = 'Hello, I am Fine and You?'; + static const home_ = 'Home'; + static const howIsYourTrip_ = 'How is your trip?'; + static const howToStartYourUXDesignCa_ = + 'How to start your UX Design career.'; + static const iAmFine_ = 'I am fine'; + static const iD786534789_ = 'ID 786534789'; + static const ideas_ = 'Ideas'; + static const ifYouDidntReceiveACode_ = "If you didn't receive a code!"; + static const indiasLargetsFashionApp_ = "India's largets fashion App"; + static const internationalBrand_ = 'International Brand'; + static const itIsALongEstablishedFact_ = + 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.'; + static const johnHawkins_ = 'John Hawkins'; + static const johngmailcom_ = 'john@gmail.com'; + static const k01362Tbilisi_ = '01362,Tbilisi'; + static const k0634Am_ = '06:34 am'; + static const k10Articles_ = '10 Articles'; + static const k10Off_ = '10% Off'; + static const k12Jan2021_ = '12 Jan, 2021'; + static const k13Articles_ = '13 Articles'; + static const k13June2020_ = '13 June, 2020'; + static const k15Sep20200230Am_ = '15 Sep, 2020 02:30 Am'; + static const k1Item_ = '1 item'; + static const k20June2019_ = '20 June, 2019'; + static const k22Aug20200230Am_ = '22 Aug, 2020 02:30 Am'; + static const k22June20200230Am_ = '22 June, 2020 02:30 Am'; + static const k22Mar20200230Am_ = '22 Mar, 2020 02:30 Am'; + static const k24Articles_ = '24 Articles'; + static const k25Jan2020_ = '25 Jan, 2020'; + static const k2Items_ = '2 items'; + static const k2PetreMelikshliSt_ = '2 Petre Melikshli St.'; + static const k30Off_ = '30% Off'; + static const k3201_ = '32:01'; + static const k4000_ = '40.00'; + static const k4971GodfreyRoad_ = '4971 Godfrey Road'; + static const k50Off_ = '50% Off'; + static const k5Articles_ = '5 Articles'; + static const k6Articles_ = '6 Articles'; + static const k6MonthsExperienceLivingIn_ = + '6 months experience living in south korea.'; + static const k8Articles_ = '8 Articles'; + static const k90sRewind_ = '90s Rewind'; + static const k91987654321_ = '+91 987654321'; + static const kapilSharma_ = 'Kapil Sharma'; + static const kevin_ = 'Kevin'; + static const kurtiSuits_ = 'Kurti & Suits'; + static const lOGIN_ = 'LOGIN'; + static const labels_ = 'Labels'; + static const language_ = 'Language'; + static const lastName_ = 'Last Name'; + static const latestNews_ = 'Latest News'; + static const learningAboutDesignThinking_ = 'Learning about design Thinking.'; + static const lifeStyle_ = 'LifeStyle'; + static const logOut_ = 'Log out'; + static const loginWithSocialNetwork_ = 'Login with Social Network'; + static const login_ = 'Login'; + static const logout_ = 'Logout'; + static const loremIpsumDolorSitAmetCo_ = + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'; + static const loremIpsumIsSimplyDummyTe_ = + "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."; + static const loremIpsumIsSimplyDummyTe_1 = + 'Lorem Ipsum is simply dummy text of the printing and typesetting industry'; + static const loremIpsumOrLipsumAsItI_ = + 'Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs.'; + static const loremIpsumOrLipsumAsItI_1 = + 'Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphics.'; + static const lorem_ = 'Lorem'; + static const mTVCoke_ = 'MTV Coke'; + static const marie_ = 'Marie'; + static const membership_ = 'Membership'; + static const men_ = 'Men'; + static const message_ = 'Message'; + static const misson_ = 'Misson'; + static const monthly_ = 'Monthly'; + static const moreLike_ = 'More Like'; + static const mostRecent_ = 'Most Recent'; + static const myAccount_ = 'My Account'; + static const myApp_ = 'My App'; + static const newMusicHindi_ = 'New Music Hindi'; + static const next_ = 'Next'; + static const noInternet_ = 'No Internet'; + static const notebooks_ = 'Notebooks'; + static const notes_ = 'Notes'; + static const notificationSetting_ = 'Notification Setting'; + static const notifications_ = 'Notifications'; + static const offerZone_ = 'Offer Zone'; + static const oopsYouAreLost_ = 'Oops! You are lost'; + static const password_ = 'Password'; + static const philipRamirez_ = 'Philip Ramirez'; + static const phone_ = 'Phone'; + static const pinNotes_ = 'Pin notes'; + static const pins_ = 'Pins'; + static const pleaseCheckYourInternetCon_ = + 'Please check your internet connection and try again'; + static const politics_ = 'Politics'; + static const popularMusic_ = 'Popular Music'; + static const predictionAboutWhoWillWin_ = + 'Prediction about who will win the premier league.'; + static const profile_ = 'Profile'; + static const promotion_ = 'Promotion'; + static const raatanLmbiyan_ = 'Raatan Lmbiyan'; + static const ranjha_ = 'Ranjha'; + static const recent_ = 'Recent'; + static const recentlyPlayed_ = 'Recently played'; + static const recommendedArticle_ = 'Recommended Article'; + static const register_ = 'Register'; + static const renne_ = 'Renne'; + static const resend_ = 'Resend'; + static const resetPassword_ = 'Reset Password'; + static const review_ = 'Review'; + static const rose_ = 'Rose'; + static const sEND_ = 'SEND'; + static const sHOPNOW_ = 'SHOP NOW'; + static const sIGNIN_ = 'SIGN IN'; + static const sIGNUP_ = 'SIGN UP'; + static const sKIP_ = 'SKIP'; + static const saree_ = 'Saree'; + static const science_ = 'Science'; + static const searchHere_ = 'Search here'; + static const search_ = 'Search'; + static const selectPlan_ = 'Select Plan'; + static const settings_ = 'Settings'; + static const shershaahOriginal_ = 'Shershaah(Original)'; + static const sheryaGhoshval_ = 'Sherya Ghoshval'; + static const shopping_ = 'Shopping'; + static const shouldDesignerIsAbleToCod_ = + 'Should designer is able to coding ?'; + static const signUp_ = 'Sign Up'; + static const singleJasleenRoyal_ = 'Single. Jasleen Royal'; + static const singleTanishkBagchi_ = 'Single. Tanishk Bagchi'; + static const smith_ = 'Smith'; + static const sortBy_ = 'Sort by'; + static const spinWinAdduredCredits_ = 'Spin & Win Addured Credits'; + static const spinWinAssuredCredits_ = 'Spin & Win Assured Credits'; + static const sports_ = 'Sports'; + static const story_ = 'Story'; + static const submitReview_ = 'Submit Review'; + static const tRYAGAIN_ = 'TRY AGAIN'; + static const tech_ = 'Tech'; + static const technology_ = 'Technology'; + static const termsAndConditions_ = 'Terms and Conditions'; + static const testgmailcom_ = 'test@gmail.com'; + static const text_ = 'Text'; + static const thePageYouAreLookingForC_ = + 'The page you are looking for could not be found.'; + static const theRoleOfCreativityInUXD_ = + 'The Role of creativity in UX design?'; + static const theRoleOfCretivityInUXDe_ = + 'The Role of Cretivity in UX design?'; + static const theWatchModelThatMakesYu_ = + 'The watch model that makes yu even cooler.'; + static const today_ = 'Today'; + static const uSD1990_ = 'USD 199.0'; + static const uSD499month_ = 'USD 4.99/month'; + static const uSD999_ = 'USD 9.99'; + static const uX_ = 'UX'; + static const upgradePlan_ = 'Upgrade Plan'; + static const userResearchMovieApp_ = 'User Research Movie App'; + static const username_ = 'Username'; + static const verification_ = 'Verification'; + static const verify_ = 'Verify'; + static const vishalShekharAtifAslam_ = 'Vishal-Shekhar,Atif Aslam'; + static const vision_ = 'Vision'; + static const weHaveSpecialFood_ = 'We Have Special Food'; + static const webDevelopPortfolio_ = 'Web Develop Portfolio'; + static const webIdeas_ = 'Web Ideas'; + static const welcomeToTheFultterStudio_ = + 'Welcome to the FultterStudio. Make Attractive UI using FultterStudio.'; + static const westernwear_ = 'Westernwear'; + static const whyDoPlainTshirtsMakeUs_ = + 'Why do plain t-shirts make us look cooler ?'; + static const xD_ = 'XD'; + static const yearly_ = 'Yearly'; + static const yourFeedbackWillHelpImprov_ = + 'Your feedback will help improve driving experience.'; + static const youtubeIdeas_ = 'Youtube Ideas'; +} diff --git a/lib/src/common/utils.dart b/lib/src/common/utils.dart new file mode 100644 index 0000000..6976263 --- /dev/null +++ b/lib/src/common/utils.dart @@ -0,0 +1,106 @@ +import 'package:collection/collection.dart'; +import 'dart:convert'; +import 'dart:math'; +import 'dart:ui'; + +import 'package:flutter/services.dart' show rootBundle; + +//import '../data/api/_api.dart'; +import '../data/models/_models.dart'; +import '../data/repository/_dao.dart'; + +export 'package:google_fonts/google_fonts.dart'; + +/*List samplesListModelFromJson(String str) => + List.from(json.decode(str).map((x) => Sample.fromJson(x))); + +String samplesListModelToJson(List data) => + json.encode(List.from(data.map((x) => x.toJson())));*/ + +Future fillWithMockData() async { + await Future.delayed(const Duration(seconds: 3)); + var jsonString = await rootBundle.loadString('assets/data.json'); + var data = json.decode(jsonString); + + var sampleItems = List.from( + data['sample'].map((x) => Sample.fromJson(x)), + ); + var sampleDao = SampleDao(); + await sampleDao.deleteAll(); + for (var item in sampleItems) { + await sampleDao.insert(item); + } + + return true; +} + +/// Darken a color by [percent] amount (100 = black) +Color darken(Color c, [int percent = 15]) { + assert(1 <= percent && percent <= 100); + var f = 1 - percent / 100; + return Color.fromARGB( + c.alpha, + (c.red * f).round(), + (c.green * f).round(), + (c.blue * f).round(), + ); +} + +/// Lighten a color by [percent] amount (100 = white) +Color lighten(Color c, [int percent = 85]) { + assert(1 <= percent && percent <= 100); + var p = percent / 100; + return Color.fromARGB( + c.alpha, + c.red + ((255 - c.red) * p).round(), + c.green + ((255 - c.green) * p).round(), + c.blue + ((255 - c.blue) * p).round(), + ); +} + +// Validators +String? requiredValidator(String? value) { + if (value?.trim().isNotEmpty != true) { + return 'Please fill this field'; + } + return null; +} + +String? emailValidator(String? value) { + if (value?.trim().isNotEmpty != true) { + return 'Please fill this field'; + } + // https://stackoverflow.com/a/16888554 + if (!RegExp( + r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?)*$", + ).hasMatch(value!)) { + return 'Enter valid email address'; + } + return null; +} + +String? passwordValidator(String? value) { + if (value?.trim().isNotEmpty != true) { + return 'Please fill this field'; + } + // https://stackoverflow.com/a/19605207 + if (!RegExp( + r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$', + ).hasMatch(value!)) { + return 'Password must be at least 8 characters long and include lowercase, uppercase, number, and special character'; + } + return null; +} + +String? phoneValidator(String? value) { + if (value?.trim().isNotEmpty != true) { + return 'Please fill this field'; + } + // https://stackoverflow.com/a/16702965 + if (!RegExp( + r'^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$', + ).hasMatch(value!)) { + return 'Enter valid phone number'; + } + return null; +} diff --git a/lib/src/data/models/_models.dart b/lib/src/data/models/_models.dart new file mode 100644 index 0000000..426e3ff --- /dev/null +++ b/lib/src/data/models/_models.dart @@ -0,0 +1 @@ +export 'sample.dart'; diff --git a/lib/src/data/models/sample.dart b/lib/src/data/models/sample.dart new file mode 100644 index 0000000..a9b04b7 --- /dev/null +++ b/lib/src/data/models/sample.dart @@ -0,0 +1,34 @@ +import 'package:json_annotation/json_annotation.dart'; + +import '_models.dart'; + +part 'sample.g.dart'; + +@JsonSerializable() +class Sample { + Sample({this.string, this.integer, this.decimal, this.boolean, this.date}); + + String? string; + int? integer; + double? decimal; + bool? boolean; + DateTime? date; + + @JsonKey(ignore: true) + String? id; + + factory Sample.fromJson(Map json) => _$SampleFromJson(json); + + Map toJson() => _$SampleToJson(this); + + @override + operator ==(Object other) => other is Sample && other.id == id; + + @override + int get hashCode => id.hashCode; + + @override + String toString() { + return ''; + } +} diff --git a/lib/src/data/repository/_dao.dart b/lib/src/data/repository/_dao.dart new file mode 100644 index 0000000..86d32da --- /dev/null +++ b/lib/src/data/repository/_dao.dart @@ -0,0 +1,25 @@ +export 'sample_dao.dart'; + +abstract class Dao { + Future delete(String id); + + Future deleteAll(); + + T? get(String id); + + List getAll(); + + T create(); + + Future insert(T item); + + Future> fetchAll(); + + Future fetch(String id); + + Future update(T item, String id); + + Future upsert(T item); + + Stream> subscribe(); +} diff --git a/lib/src/data/repository/sample_dao.dart b/lib/src/data/repository/sample_dao.dart new file mode 100644 index 0000000..5b6464d --- /dev/null +++ b/lib/src/data/repository/sample_dao.dart @@ -0,0 +1,90 @@ +import 'dart:async'; + +import 'package:uuid/uuid.dart' as uuid; +import 'package:flutter/foundation.dart'; + +import '../models/_models.dart'; +import '_dao.dart'; + +class SampleDao extends Dao { + static SampleDao? _instance; + + // singleton instance + factory SampleDao() => _instance ??= SampleDao._internal(); + + SampleDao._internal() { + // initialization logic here + } + + final Map _storage = {}; + final StreamController> _streamController = + StreamController>.broadcast(); + + @override + Future delete(String id) async { + var removed = _storage.remove(id); + _emit(); + return removed; + } + + @override + Future deleteAll() async { + _storage.clear(); + _emit(); + return true; + } + + @override + Sample? get(String id) { + return _storage[id]; + } + + @override + List getAll() { + return _storage.values.toList(); + } + + @override + Sample create() { + return Sample(); + } + + @override + Future insert(Sample item) async { + var id = const uuid.Uuid().v4(); + //var newSample = Sample(name: item.name)..id = id; + var newSample = item..id = id; + _storage[id] = newSample; + _emit(); + return newSample; + } + + @override + Future> fetchAll() async { + return _storage.values.toList(); + } + + @override + Future fetch(String id) async { + return _storage[id]; + } + + @override + Future update(Sample item, String id) async { + _storage[id] = item; + _emit(); + return item..id = id; + } + + @override + Future upsert(Sample item) async { + return (item.id == null) ? insert(item) : update(item, item.id!); + } + + @override + Stream> subscribe() => _streamController.stream; + + void _emit() { + _streamController.add(_storage.values.toList()); + } +} diff --git a/lib/src/ui/components/_components.dart b/lib/src/ui/components/_components.dart new file mode 100644 index 0000000..385e12f --- /dev/null +++ b/lib/src/ui/components/_components.dart @@ -0,0 +1,105 @@ +export 'padding1668_943x.dart'; +export 'padding2658_p1zk.dart'; +export 'stack1907_xt28.dart'; +export 'container122_a8w6.dart'; +export 'container2933_cvn3.dart'; +export 'stack3232_t74i.dart'; +export 'stack3235_ayay.dart'; +export 'stack1908_55ms.dart'; +export 'container676_u4q2.dart'; +export 'stack1913_cao7.dart'; +export 'text_field561_jhkd.dart'; +export 'stack3232_hcgu.dart'; +export 'padding562_b5u2.dart'; +export 'stack1911_9sq5.dart'; +export 'padding8_wdx9.dart'; +export 'list_tile1214_lcq3.dart'; +export 'text1342_x667.dart'; +export 'padding1247_rcmx.dart'; +export 'divider1211_qqok.dart'; +export 'padding1670_gouc.dart'; +export 'clip_r_rect1340_ko9q.dart'; +export 'text12_uxqe.dart'; +export 'container1045_jwip.dart'; +export 'padding1_p779.dart'; +export 'app_bar682_1czg.dart'; +export 'rating_barbuilder1009_hkzs.dart'; +export 'stack3205_puva.dart'; +export 'divider1211_quka.dart'; +export 'list_tile1210_3rti.dart'; +export 'padding1902_1msv.dart'; +export 'container2930_2rhj.dart'; +export 'stack3231_thkh.dart'; +export 'padding1901_cx9n.dart'; +export 'padding2523_p4he.dart'; +export 'padding2661_qzry.dart'; +export 'stack1914_hvm6.dart'; +export 'material_button1217_jwby.dart'; +export 'padding2662_bl2j.dart'; +export 'container1915_m39v.dart'; +export 'app_bar2944_rotl.dart'; +export 'padding1903_0ffz.dart'; +export 'align2939_fgkc.dart'; +export 'padding2660_8c7p.dart'; +export 'divider1211_akau.dart'; +export 'text_field1926_332s.dart'; +export 'padding2659_acub.dart'; +export 'stack1910_yg0l.dart'; +export 'row1218_c1cc.dart'; +export 'padding2656_z413.dart'; +export 'row1927_acsm.dart'; +export 'padding2522_3z73.dart'; +export 'app_bar3210_xy2e.dart'; +export 'otp_text_field1083_80av.dart'; +export 'stack1906_s1jy.dart'; +export 'stack1912_btq1.dart'; +export 'material_button1215_0qfr.dart'; +export 'row3264_os4l.dart'; +export 'switch_list_tile1212_w9oz.dart'; +export 'container1042_49si.dart'; +export 'padding2663_fus1.dart'; +export 'padding1904_tdvf.dart'; +export 'row703_gnuw.dart'; +export 'stack2339_cb92.dart'; +export 'container1044_awqh.dart'; +export 'padding1339_yprp.dart'; +export 'stack3234_ew9q.dart'; +export 'row1667_tgx9.dart'; +export 'stack3208_5dv2.dart'; +export 'container2934_5anc.dart'; +export 'app_bar1048_e0na.dart'; +export 'stack2554_yhdm.dart'; +export 'app_bar2671_1agg.dart'; +export 'text_field710_3r6r.dart'; +export 'padding2657_r22y.dart'; +export 'padding3297_l244.dart'; +export 'padding563_2jw4.dart'; +export 'padding2520_wweb.dart'; +export 'stack1909_yxtc.dart'; +export 'padding1341_9kox.dart'; +export 'padding3261_vzwy.dart'; +export 'padding5_pcnl.dart'; +export 'app_bar1219_t88q.dart'; +export 'stack3231_qtc6.dart'; +export 'stack3236_u65x.dart'; +export 'container2930_qyoo.dart'; +export 'padding2654_rvnw.dart'; +export 'container121_di37.dart'; +export 'list_tile1213_y7ek.dart'; +export 'stack3233_o59n.dart'; +export 'row1245_305i.dart'; +export 'padding564_yzg6.dart'; +export 'material_button123_qtis.dart'; +export 'package:smooth_page_indicator/smooth_page_indicator.dart'; +export 'package:flutter_rating_bar/flutter_rating_bar.dart'; +export 'package:lottie/lottie.dart'; +export 'package:flutter_otp_text_field/flutter_otp_text_field.dart'; + +import 'package:flutter/material.dart'; + +abstract class BaseAppBar extends StatelessWidget + implements PreferredSizeWidget { + const BaseAppBar({super.key}); + + Size get preferredSize => Size.fromHeight(kToolbarHeight); +} diff --git a/lib/src/ui/components/align2939_fgkc.dart b/lib/src/ui/components/align2939_fgkc.dart new file mode 100644 index 0000000..61a5b48 --- /dev/null +++ b/lib/src/ui/components/align2939_fgkc.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Align2939_fgkc extends StatelessWidget { + final IconData p1; + + Align2939_fgkc(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Align( + alignment: Alignment.bottomRight, + child: Container( + margin: EdgeInsets.fromLTRB(0, 0, 16, 16), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.circle, + ), + child: Icon(p1, color: Color(0xffffffff), size: 24), + ), + ); + } +} diff --git a/lib/src/ui/components/app_bar1048_e0na.dart b/lib/src/ui/components/app_bar1048_e0na.dart new file mode 100644 index 0000000..04001a4 --- /dev/null +++ b/lib/src/ui/components/app_bar1048_e0na.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AppBar1048_e0na extends BaseAppBar { + final IconData p3; + final IconData p2; + final String p1; + + AppBar1048_e0na(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffffffff), + ), + ), + actions: [ + Icon(p2, color: Color(0xffffffff), size: 22), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 16, 0), + child: Icon(p3, color: Color(0xffffffff), size: 22), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/app_bar1219_t88q.dart b/lib/src/ui/components/app_bar1219_t88q.dart new file mode 100644 index 0000000..90e68f4 --- /dev/null +++ b/lib/src/ui/components/app_bar1219_t88q.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AppBar1219_t88q extends BaseAppBar { + final String p1; + + AppBar1219_t88q(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffffffff), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/app_bar2671_1agg.dart b/lib/src/ui/components/app_bar2671_1agg.dart new file mode 100644 index 0000000..9a395eb --- /dev/null +++ b/lib/src/ui/components/app_bar2671_1agg.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AppBar2671_1agg extends BaseAppBar { + final VoidCallback p2; + final String p1; + + AppBar2671_1agg(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.menu, color: Color(0xff212435), size: 24), + onPressed: p2, + ), + actions: [Icon(Icons.search, color: Color(0xff212435), size: 24)], + ); + } +} diff --git a/lib/src/ui/components/app_bar2944_rotl.dart b/lib/src/ui/components/app_bar2944_rotl.dart new file mode 100644 index 0000000..484714a --- /dev/null +++ b/lib/src/ui/components/app_bar2944_rotl.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AppBar2944_rotl extends BaseAppBar { + final String p1; + + AppBar2944_rotl(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xfff9f9f9), + ), + ), + actions: [ + Icon(Icons.search, color: Color(0xffffffff), size: 22), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 16, 0), + child: Icon(Icons.dashboard, color: Color(0xffffffff), size: 22), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/app_bar3210_xy2e.dart b/lib/src/ui/components/app_bar3210_xy2e.dart new file mode 100644 index 0000000..5319910 --- /dev/null +++ b/lib/src/ui/components/app_bar3210_xy2e.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AppBar3210_xy2e extends BaseAppBar { + final IconData p3; + final VoidCallback p2; + final String p1; + + AppBar3210_xy2e(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: p2, + ), + actions: [Icon(p3, color: Color(0xff212435), size: 24)], + ); + } +} diff --git a/lib/src/ui/components/app_bar682_1czg.dart b/lib/src/ui/components/app_bar682_1czg.dart new file mode 100644 index 0000000..3339c7a --- /dev/null +++ b/lib/src/ui/components/app_bar682_1czg.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AppBar682_1czg extends BaseAppBar { + final IconData p3; + final IconData p2; + final String p1; + + AppBar682_1czg(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffffffff), + ), + ), + actions: [ + Icon(p2, color: Color(0xffffffff), size: 22), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 16, 0), + child: Icon(p3, color: Color(0xffffffff), size: 22), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/clip_r_rect1340_ko9q.dart b/lib/src/ui/components/clip_r_rect1340_ko9q.dart new file mode 100644 index 0000000..46fcac4 --- /dev/null +++ b/lib/src/ui/components/clip_r_rect1340_ko9q.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ClipRRect1340_ko9q extends StatelessWidget { + final String p1; + + ClipRRect1340_ko9q(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return ClipRRect( + borderRadius: BorderRadius.circular(12.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: 200, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ); + } +} diff --git a/lib/src/ui/components/container1042_49si.dart b/lib/src/ui/components/container1042_49si.dart new file mode 100644 index 0000000..cbce407 --- /dev/null +++ b/lib/src/ui/components/container1042_49si.dart @@ -0,0 +1,157 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container1042_49si extends StatelessWidget { + final String p6; + final String p5; + final IconData p4; + final IconData p3; + final String p2; + final IconData p1; + + Container1042_49si( + this.p6, + this.p5, + this.p4, + this.p3, + this.p2, + this.p1, { + super.key, + }); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.fromLTRB(0, 0, 0, 16), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(p1, color: Color(0xff3a57e8), size: 50), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Icon( + p3, + color: Color(0xffffac00), + size: 20, + ), + ), + ], + ), + ), + Icon(p4, color: Color(0xff212435), size: 20), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + p5, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff393939), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + p6, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container1044_awqh.dart b/lib/src/ui/components/container1044_awqh.dart new file mode 100644 index 0000000..f912054 --- /dev/null +++ b/lib/src/ui/components/container1044_awqh.dart @@ -0,0 +1,157 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container1044_awqh extends StatelessWidget { + final String p6; + final String p5; + final IconData p4; + final IconData p3; + final String p2; + final IconData p1; + + Container1044_awqh( + this.p6, + this.p5, + this.p4, + this.p3, + this.p2, + this.p1, { + super.key, + }); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.fromLTRB(0, 0, 0, 16), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(p1, color: Color(0xff3a57e8), size: 50), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Icon( + p3, + color: Color(0xffffac00), + size: 20, + ), + ), + ], + ), + ), + Icon(p4, color: Color(0xff212435), size: 20), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + p5, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff393939), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + p6, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container1045_jwip.dart b/lib/src/ui/components/container1045_jwip.dart new file mode 100644 index 0000000..4de18d6 --- /dev/null +++ b/lib/src/ui/components/container1045_jwip.dart @@ -0,0 +1,157 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container1045_jwip extends StatelessWidget { + final String p6; + final String p5; + final IconData p4; + final IconData p3; + final String p2; + final IconData p1; + + Container1045_jwip( + this.p6, + this.p5, + this.p4, + this.p3, + this.p2, + this.p1, { + super.key, + }); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.fromLTRB(0, 0, 0, 16), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(p1, color: Color(0xff3a57e8), size: 50), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Icon( + p3, + color: Color(0xffffac00), + size: 20, + ), + ), + ], + ), + ), + Icon(p4, color: Color(0xff212435), size: 20), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + p5, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff393939), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + p6, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container121_di37.dart b/lib/src/ui/components/container121_di37.dart new file mode 100644 index 0000000..86ed02f --- /dev/null +++ b/lib/src/ui/components/container121_di37.dart @@ -0,0 +1,94 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container121_di37 extends StatelessWidget { + final String p4; + final String p3; + final String p2; + final Color p1; + + Container121_di37(this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 140, + height: 180, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0xffff5630), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 40, + height: 40, + decoration: BoxDecoration(color: p1, shape: BoxShape.circle), + child: Icon(Icons.done, color: Color(0xffffffff), size: 24), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + p4, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container122_a8w6.dart b/lib/src/ui/components/container122_a8w6.dart new file mode 100644 index 0000000..5dbb0cb --- /dev/null +++ b/lib/src/ui/components/container122_a8w6.dart @@ -0,0 +1,94 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container122_a8w6 extends StatelessWidget { + final String p4; + final String p3; + final String p2; + final Color p1; + + Container122_a8w6(this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.fromLTRB(16, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 140, + height: 180, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x68898989), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 40, + height: 40, + decoration: BoxDecoration(color: p1, shape: BoxShape.circle), + child: Icon(Icons.done, color: Color(0xffffffff), size: 24), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + p4, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container1915_m39v.dart b/lib/src/ui/components/container1915_m39v.dart new file mode 100644 index 0000000..0e5a968 --- /dev/null +++ b/lib/src/ui/components/container1915_m39v.dart @@ -0,0 +1,110 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container1915_m39v extends StatefulWidget { + final String p4; + final String p3; + final String p2; + final String p1; + + Container1915_m39v(this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + State createState() => _Container1915_m39vState(); +} + +class _Container1915_m39vState extends State { + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 280, + height: 100, + decoration: BoxDecoration( + color: Color(0x00000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(12.0), + bottomLeft: Radius.circular(12.0), + ), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image(image: NetworkImage(widget.p1), fit: BoxFit.cover), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 4), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + widget.p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + widget.p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + widget.p4, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container2930_2rhj.dart b/lib/src/ui/components/container2930_2rhj.dart new file mode 100644 index 0000000..863b42e --- /dev/null +++ b/lib/src/ui/components/container2930_2rhj.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container2930_2rhj extends StatelessWidget { + final String p4; + final String p3; + final IconData p2; + final IconData p1; + + Container2930_2rhj(this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.fromLTRB(0, 0, 16, 0), + padding: EdgeInsets.all(12), + width: 150, + height: 170, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(p1, color: Color(0xffffc000), size: 24), + Icon(p2, color: Color(0xff212435), size: 24), + ], + ), + ImageIcon(NetworkImage(p3), size: 80, color: Color(0xffd46d24)), + Text( + p4, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container2930_qyoo.dart b/lib/src/ui/components/container2930_qyoo.dart new file mode 100644 index 0000000..6bb2846 --- /dev/null +++ b/lib/src/ui/components/container2930_qyoo.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container2930_qyoo extends StatelessWidget { + final String p4; + final String p3; + final IconData p2; + final IconData p1; + + Container2930_qyoo(this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.fromLTRB(0, 0, 16, 0), + padding: EdgeInsets.all(12), + width: 150, + height: 170, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(p1, color: Color(0xffffc000), size: 24), + Icon(p2, color: Color(0xff212435), size: 24), + ], + ), + ImageIcon(NetworkImage(p3), size: 80, color: Color(0xffd46d24)), + Text( + p4, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container2933_cvn3.dart b/lib/src/ui/components/container2933_cvn3.dart new file mode 100644 index 0000000..4f1a3e3 --- /dev/null +++ b/lib/src/ui/components/container2933_cvn3.dart @@ -0,0 +1,100 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container2933_cvn3 extends StatelessWidget { + final String p5; + final String p4; + final String p3; + final IconData p2; + final IconData p1; + + Container2933_cvn3(this.p5, this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(p1, color: Color(0xffffc000), size: 24), + Icon(p2, color: Color(0xff212435), size: 24), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + p3, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + p4, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric(vertical: 4, horizontal: 8), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + p5, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container2934_5anc.dart b/lib/src/ui/components/container2934_5anc.dart new file mode 100644 index 0000000..d6ad6f9 --- /dev/null +++ b/lib/src/ui/components/container2934_5anc.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container2934_5anc extends StatelessWidget { + final String p4; + final String p3; + final String p2; + final IconData p1; + + Container2934_5anc(this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 16, width: 16), + Icon(p1, color: Color(0xff212435), size: 24), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + p2, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric(vertical: 4, horizontal: 8), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + p4, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/container676_u4q2.dart b/lib/src/ui/components/container676_u4q2.dart new file mode 100644 index 0000000..f1cfd78 --- /dev/null +++ b/lib/src/ui/components/container676_u4q2.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Container676_u4q2 extends StatelessWidget { + final String p2; + final String p1; + + Container676_u4q2(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + p1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff3a57e8), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff4c4c4c), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/divider1211_akau.dart b/lib/src/ui/components/divider1211_akau.dart new file mode 100644 index 0000000..32cb89f --- /dev/null +++ b/lib/src/ui/components/divider1211_akau.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Divider1211_akau extends StatelessWidget { + Divider1211_akau({super.key}); + + @override + Widget build(BuildContext context) { + return Divider( + color: Color(0x4d9e9e9e), + height: 16, + thickness: 1, + indent: 0, + endIndent: 0, + ); + } +} diff --git a/lib/src/ui/components/divider1211_qqok.dart b/lib/src/ui/components/divider1211_qqok.dart new file mode 100644 index 0000000..13d0e3f --- /dev/null +++ b/lib/src/ui/components/divider1211_qqok.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Divider1211_qqok extends StatelessWidget { + Divider1211_qqok({super.key}); + + @override + Widget build(BuildContext context) { + return Divider( + color: Color(0x4d9e9e9e), + height: 16, + thickness: 1, + indent: 0, + endIndent: 0, + ); + } +} diff --git a/lib/src/ui/components/divider1211_quka.dart b/lib/src/ui/components/divider1211_quka.dart new file mode 100644 index 0000000..98d3f2c --- /dev/null +++ b/lib/src/ui/components/divider1211_quka.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Divider1211_quka extends StatelessWidget { + Divider1211_quka({super.key}); + + @override + Widget build(BuildContext context) { + return Divider( + color: Color(0x4d9e9e9e), + height: 16, + thickness: 1, + indent: 0, + endIndent: 0, + ); + } +} diff --git a/lib/src/ui/components/list_tile1210_3rti.dart b/lib/src/ui/components/list_tile1210_3rti.dart new file mode 100644 index 0000000..951a8fc --- /dev/null +++ b/lib/src/ui/components/list_tile1210_3rti.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ListTile1210_3rti extends StatelessWidget { + final String p1; + + ListTile1210_3rti(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return ListTile( + tileColor: Color(0xffffffff), + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + textAlign: TextAlign.start, + ), + dense: true, + contentPadding: EdgeInsets.all(0), + selected: false, + selectedTileColor: Color(0x42000000), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + trailing: Icon( + Icons.arrow_forward_ios, + color: Color(0xff000000), + size: 18, + ), + ); + } +} diff --git a/lib/src/ui/components/list_tile1213_y7ek.dart b/lib/src/ui/components/list_tile1213_y7ek.dart new file mode 100644 index 0000000..e0242c0 --- /dev/null +++ b/lib/src/ui/components/list_tile1213_y7ek.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ListTile1213_y7ek extends StatelessWidget { + final String p1; + + ListTile1213_y7ek(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return ListTile( + tileColor: Color(0xffffffff), + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + textAlign: TextAlign.start, + ), + dense: true, + contentPadding: EdgeInsets.all(0), + selected: false, + selectedTileColor: Color(0x42000000), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + trailing: Icon( + Icons.arrow_forward_ios, + color: Color(0xff000000), + size: 18, + ), + ); + } +} diff --git a/lib/src/ui/components/list_tile1214_lcq3.dart b/lib/src/ui/components/list_tile1214_lcq3.dart new file mode 100644 index 0000000..ff1711a --- /dev/null +++ b/lib/src/ui/components/list_tile1214_lcq3.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ListTile1214_lcq3 extends StatelessWidget { + final String p1; + + ListTile1214_lcq3(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return ListTile( + tileColor: Color(0xffffffff), + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + textAlign: TextAlign.start, + ), + dense: true, + contentPadding: EdgeInsets.all(0), + selected: false, + selectedTileColor: Color(0x42000000), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + trailing: Icon( + Icons.arrow_forward_ios, + color: Color(0xff000000), + size: 18, + ), + ); + } +} diff --git a/lib/src/ui/components/material_button1215_0qfr.dart b/lib/src/ui/components/material_button1215_0qfr.dart new file mode 100644 index 0000000..3c826ad --- /dev/null +++ b/lib/src/ui/components/material_button1215_0qfr.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class MaterialButton1215_0qfr extends StatelessWidget { + final String p2; + final VoidCallback p1; + + MaterialButton1215_0qfr(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return MaterialButton( + onPressed: p1, + color: Color(0x343a57e8), + elevation: 0, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + padding: EdgeInsets.all(16), + child: Text( + p2, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xff3a57e8), + height: 40, + minWidth: MediaQuery.of(context).size.width, + ); + } +} diff --git a/lib/src/ui/components/material_button1217_jwby.dart b/lib/src/ui/components/material_button1217_jwby.dart new file mode 100644 index 0000000..7b72e0f --- /dev/null +++ b/lib/src/ui/components/material_button1217_jwby.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class MaterialButton1217_jwby extends StatelessWidget { + final String p2; + final VoidCallback p1; + + MaterialButton1217_jwby(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return MaterialButton( + onPressed: p1, + color: Color(0x343a57e8), + elevation: 0, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)), + padding: EdgeInsets.all(16), + child: Text( + p2, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xff3a57e8), + minWidth: MediaQuery.of(context).size.width, + ); + } +} diff --git a/lib/src/ui/components/material_button123_qtis.dart b/lib/src/ui/components/material_button123_qtis.dart new file mode 100644 index 0000000..4ede6bc --- /dev/null +++ b/lib/src/ui/components/material_button123_qtis.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class MaterialButton123_qtis extends StatelessWidget { + final String p3; + final Color p2; + final VoidCallback p1; + + MaterialButton123_qtis(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return MaterialButton( + onPressed: p1, + color: p2, + elevation: 0, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)), + padding: EdgeInsets.all(16), + child: Text( + p3, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 50, + minWidth: MediaQuery.of(context).size.width, + ); + } +} diff --git a/lib/src/ui/components/otp_text_field1083_80av.dart b/lib/src/ui/components/otp_text_field1083_80av.dart new file mode 100644 index 0000000..3745dd3 --- /dev/null +++ b/lib/src/ui/components/otp_text_field1083_80av.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class OtpTextField1083_80av extends StatelessWidget { + OtpTextField1083_80av({super.key}); + + @override + Widget build(BuildContext context) { + return OtpTextField( + numberOfFields: 4, + showFieldAsBox: false, + fieldWidth: 50, + filled: true, + fillColor: Color(0x00000000), + enabledBorderColor: Color(0xff898a8e), + focusedBorderColor: Color(0xff3a57e8), + borderWidth: 2, + margin: EdgeInsets.all(0), + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.center, + obscureText: false, + borderRadius: BorderRadius.circular(4.0), + textStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + onCodeChanged: (String code) {}, + onSubmit: (String verificationCode) {}, + ); + } +} diff --git a/lib/src/ui/components/padding1247_rcmx.dart b/lib/src/ui/components/padding1247_rcmx.dart new file mode 100644 index 0000000..8f6be48 --- /dev/null +++ b/lib/src/ui/components/padding1247_rcmx.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1247_rcmx extends StatelessWidget { + final String p1; + + Padding1247_rcmx(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Checkbox( + onChanged: (value) {}, + activeColor: Color(0xffff5630), + autofocus: false, + checkColor: Color(0x005d0e0e), + hoverColor: Color(0x42000000), + splashRadius: 20, + value: false, + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding1339_yprp.dart b/lib/src/ui/components/padding1339_yprp.dart new file mode 100644 index 0000000..6e94bda --- /dev/null +++ b/lib/src/ui/components/padding1339_yprp.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1339_yprp extends StatelessWidget { + final IconData p2; + final String p1; + + Padding1339_yprp(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + p1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Icon(p2, color: Color(0xb76e6e70), size: 24), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding1341_9kox.dart b/lib/src/ui/components/padding1341_9kox.dart new file mode 100644 index 0000000..bf3829f --- /dev/null +++ b/lib/src/ui/components/padding1341_9kox.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1341_9kox extends StatelessWidget { + final String p6; + final Color p5; + final VoidCallback p4; + final String p3; + final String p2; + final String p1; + + Padding1341_9kox( + this.p6, + this.p5, + this.p4, + this.p3, + this.p2, + this.p1, { + super.key, + }); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 70, + width: 70, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network(p1, fit: BoxFit.cover), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 8, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff787575), + ), + ), + ), + ], + ), + ), + ), + MaterialButton( + onPressed: p4, + color: p5, + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(16), + child: Text( + p6, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding1668_943x.dart b/lib/src/ui/components/padding1668_943x.dart new file mode 100644 index 0000000..55a498b --- /dev/null +++ b/lib/src/ui/components/padding1668_943x.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1668_943x extends StatelessWidget { + final String p2; + final IconData p1; + + Padding1668_943x(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xff636262), + shape: BoxShape.circle, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Icon(p1, color: Color(0xffffffff), size: 24), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Checkbox( + onChanged: (value) {}, + activeColor: Color(0xff3a57e8), + autofocus: false, + checkColor: Color(0xffffffff), + hoverColor: Color(0x42000000), + splashRadius: 20, + value: true, + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding1670_gouc.dart b/lib/src/ui/components/padding1670_gouc.dart new file mode 100644 index 0000000..19956c2 --- /dev/null +++ b/lib/src/ui/components/padding1670_gouc.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1670_gouc extends StatelessWidget { + final String p2; + final IconData p1; + + Padding1670_gouc(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xffff9900), + shape: BoxShape.circle, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Icon(p1, color: Color(0xffffffff), size: 24), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Icon(Icons.arrow_forward_ios, color: Color(0xff7b7c80), size: 18), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding1901_cx9n.dart b/lib/src/ui/components/padding1901_cx9n.dart new file mode 100644 index 0000000..9fc3de2 --- /dev/null +++ b/lib/src/ui/components/padding1901_cx9n.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1901_cx9n extends StatefulWidget { + final String p2; + final String p1; + + Padding1901_cx9n(this.p2, this.p1, {super.key}); + + @override + State createState() => _Padding1901_cx9nState(); +} + +class _Padding1901_cx9nState extends State { + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network(widget.p1, fit: BoxFit.cover), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding1902_1msv.dart b/lib/src/ui/components/padding1902_1msv.dart new file mode 100644 index 0000000..e39b758 --- /dev/null +++ b/lib/src/ui/components/padding1902_1msv.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1902_1msv extends StatefulWidget { + final String p2; + final String p1; + + Padding1902_1msv(this.p2, this.p1, {super.key}); + + @override + State createState() => _Padding1902_1msvState(); +} + +class _Padding1902_1msvState extends State { + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network(widget.p1, fit: BoxFit.cover), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding1903_0ffz.dart b/lib/src/ui/components/padding1903_0ffz.dart new file mode 100644 index 0000000..efa947b --- /dev/null +++ b/lib/src/ui/components/padding1903_0ffz.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1903_0ffz extends StatefulWidget { + final String p2; + final String p1; + + Padding1903_0ffz(this.p2, this.p1, {super.key}); + + @override + State createState() => _Padding1903_0ffzState(); +} + +class _Padding1903_0ffzState extends State { + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network(widget.p1, fit: BoxFit.cover), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding1904_tdvf.dart b/lib/src/ui/components/padding1904_tdvf.dart new file mode 100644 index 0000000..fb4b68b --- /dev/null +++ b/lib/src/ui/components/padding1904_tdvf.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1904_tdvf extends StatefulWidget { + final String p2; + final String p1; + + Padding1904_tdvf(this.p2, this.p1, {super.key}); + + @override + State createState() => _Padding1904_tdvfState(); +} + +class _Padding1904_tdvfState extends State { + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network(widget.p1, fit: BoxFit.cover), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding1_p779.dart b/lib/src/ui/components/padding1_p779.dart new file mode 100644 index 0000000..051c69c --- /dev/null +++ b/lib/src/ui/components/padding1_p779.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding1_p779 extends StatelessWidget { + final String p2; + final String p1; + + Padding1_p779(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: 120, + width: 110, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + p2, + textAlign: TextAlign.center, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding2520_wweb.dart b/lib/src/ui/components/padding2520_wweb.dart new file mode 100644 index 0000000..a64d619 --- /dev/null +++ b/lib/src/ui/components/padding2520_wweb.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2520_wweb extends StatelessWidget { + final IconData p2; + final String p1; + + Padding2520_wweb(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 30, + height: 30, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.circle, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Icon(p2, color: Color(0xffffffff), size: 18), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding2522_3z73.dart b/lib/src/ui/components/padding2522_3z73.dart new file mode 100644 index 0000000..9229f29 --- /dev/null +++ b/lib/src/ui/components/padding2522_3z73.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2522_3z73 extends StatelessWidget { + final String p1; + + Padding2522_3z73(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + p1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding2523_p4he.dart b/lib/src/ui/components/padding2523_p4he.dart new file mode 100644 index 0000000..4952395 --- /dev/null +++ b/lib/src/ui/components/padding2523_p4he.dart @@ -0,0 +1,76 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2523_p4he extends StatelessWidget { + final String p3; + final String p2; + final IconData p1; + + Padding2523_p4he(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(p1, color: Color(0xff212435), size: 18), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + Divider( + color: Color(0xff808080), + height: 16, + thickness: 0, + indent: 0, + endIndent: 0, + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding2654_rvnw.dart b/lib/src/ui/components/padding2654_rvnw.dart new file mode 100644 index 0000000..51ddd13 --- /dev/null +++ b/lib/src/ui/components/padding2654_rvnw.dart @@ -0,0 +1,111 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2654_rvnw extends StatelessWidget { + final String p3; + final String p2; + final String p1; + + Padding2654_rvnw(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: SizedBox( + height: 170, + width: 150, + child: Stack( + alignment: Alignment.bottomCenter, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0xa04e4b4b), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: Text( + p2, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Slider( + onChanged: (value) {}, + value: 3, + min: 0, + max: 10, + activeColor: Color(0xffffffff), + inactiveColor: Color(0xff9e9e9e), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + child: Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding2656_z413.dart b/lib/src/ui/components/padding2656_z413.dart new file mode 100644 index 0000000..900cac0 --- /dev/null +++ b/lib/src/ui/components/padding2656_z413.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2656_z413 extends StatelessWidget { + final String p1; + + Padding2656_z413(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + child: Chip( + labelPadding: EdgeInsets.symmetric(vertical: 0, horizontal: 4), + label: Text(p1), + labelStyle: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + color: Color(0xffffffff), + ), + backgroundColor: Color(0xff2e2e2e), + elevation: 0, + shadowColor: Color(0xff808080), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding2657_r22y.dart b/lib/src/ui/components/padding2657_r22y.dart new file mode 100644 index 0000000..3e7a528 --- /dev/null +++ b/lib/src/ui/components/padding2657_r22y.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2657_r22y extends StatelessWidget { + final String p1; + + Padding2657_r22y(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + child: Chip( + labelPadding: EdgeInsets.symmetric(vertical: 0, horizontal: 4), + label: Text(p1), + labelStyle: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + color: Color(0x688a8989), + ), + backgroundColor: Color(0x00ffffff), + elevation: 0, + shadowColor: Color(0xff808080), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + side: BorderSide(color: Color(0x688a8989), width: 1), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding2658_p1zk.dart b/lib/src/ui/components/padding2658_p1zk.dart new file mode 100644 index 0000000..f896886 --- /dev/null +++ b/lib/src/ui/components/padding2658_p1zk.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2658_p1zk extends StatelessWidget { + final String p1; + + Padding2658_p1zk(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + child: Chip( + labelPadding: EdgeInsets.symmetric(vertical: 0, horizontal: 4), + label: Text(p1), + labelStyle: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + color: Color(0x688a8989), + ), + backgroundColor: Color(0x00ffffff), + elevation: 0, + shadowColor: Color(0xff808080), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + side: BorderSide(color: Color(0x688a8989), width: 1), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding2659_acub.dart b/lib/src/ui/components/padding2659_acub.dart new file mode 100644 index 0000000..1eb90c3 --- /dev/null +++ b/lib/src/ui/components/padding2659_acub.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2659_acub extends StatelessWidget { + final String p1; + + Padding2659_acub(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + child: Chip( + labelPadding: EdgeInsets.symmetric(vertical: 0, horizontal: 4), + label: Text(p1), + labelStyle: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + color: Color(0x688a8989), + ), + backgroundColor: Color(0x00ffffff), + elevation: 0, + shadowColor: Color(0xff808080), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + side: BorderSide(color: Color(0x688a8989), width: 1), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding2660_8c7p.dart b/lib/src/ui/components/padding2660_8c7p.dart new file mode 100644 index 0000000..56070b3 --- /dev/null +++ b/lib/src/ui/components/padding2660_8c7p.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2660_8c7p extends StatelessWidget { + final String p1; + + Padding2660_8c7p(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + child: Chip( + labelPadding: EdgeInsets.symmetric(vertical: 0, horizontal: 4), + label: Text(p1), + labelStyle: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + color: Color(0x688a8989), + ), + backgroundColor: Color(0x00ffffff), + elevation: 0, + shadowColor: Color(0xff808080), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + side: BorderSide(color: Color(0x688a8989), width: 1), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding2661_qzry.dart b/lib/src/ui/components/padding2661_qzry.dart new file mode 100644 index 0000000..f1c5adc --- /dev/null +++ b/lib/src/ui/components/padding2661_qzry.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2661_qzry extends StatelessWidget { + final String p1; + + Padding2661_qzry(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + child: Chip( + labelPadding: EdgeInsets.symmetric(vertical: 0, horizontal: 4), + label: Text(p1), + labelStyle: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + color: Color(0x688a8989), + ), + backgroundColor: Color(0x00ffffff), + elevation: 0, + shadowColor: Color(0xff808080), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + side: BorderSide(color: Color(0x688a8989), width: 1), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding2662_bl2j.dart b/lib/src/ui/components/padding2662_bl2j.dart new file mode 100644 index 0000000..4aa8a0f --- /dev/null +++ b/lib/src/ui/components/padding2662_bl2j.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2662_bl2j extends StatelessWidget { + final String p1; + + Padding2662_bl2j(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + child: Chip( + labelPadding: EdgeInsets.symmetric(vertical: 0, horizontal: 4), + label: Text(p1), + labelStyle: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + color: Color(0x688a8989), + ), + backgroundColor: Color(0x00ffffff), + elevation: 0, + shadowColor: Color(0xff808080), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + side: BorderSide(color: Color(0x688a8989), width: 1), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding2663_fus1.dart b/lib/src/ui/components/padding2663_fus1.dart new file mode 100644 index 0000000..ec39d21 --- /dev/null +++ b/lib/src/ui/components/padding2663_fus1.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding2663_fus1 extends StatelessWidget { + final String p4; + final String p3; + final String p2; + final String p1; + + Padding2663_fus1(this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: 90, + width: 90, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + p3, + textAlign: TextAlign.start, + maxLines: 3, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + p4, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding3261_vzwy.dart b/lib/src/ui/components/padding3261_vzwy.dart new file mode 100644 index 0000000..242ecd4 --- /dev/null +++ b/lib/src/ui/components/padding3261_vzwy.dart @@ -0,0 +1,97 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding3261_vzwy extends StatelessWidget { + final String p4; + final String p3; + final String p2; + final String p1; + + Padding3261_vzwy(this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(12.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: 100, + width: 100, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 8, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + p3, + textAlign: TextAlign.start, + maxLines: 3, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + p4, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff605f5f), + ), + ), + ], + ), + ), + ), + Icon(Icons.more_vert, color: Color(0xff212435), size: 24), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding3297_l244.dart b/lib/src/ui/components/padding3297_l244.dart new file mode 100644 index 0000000..83ca402 --- /dev/null +++ b/lib/src/ui/components/padding3297_l244.dart @@ -0,0 +1,116 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding3297_l244 extends StatelessWidget { + final String p6; + final String p5; + final String p4; + final String p3; + final String p2; + final String p1; + + Padding3297_l244( + this.p6, + this.p5, + this.p4, + this.p3, + this.p2, + this.p1, { + super.key, + }); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff3a57e8), + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff3a57e8), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 30), + child: Text( + p4, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + Text( + p5, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Text( + p6, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding562_b5u2.dart b/lib/src/ui/components/padding562_b5u2.dart new file mode 100644 index 0000000..cc9d9a4 --- /dev/null +++ b/lib/src/ui/components/padding562_b5u2.dart @@ -0,0 +1,63 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding562_b5u2 extends StatelessWidget { + final IconData p2; + final String p1; + + Padding562_b5u2(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22.0), + borderSide: BorderSide(color: Color(0xffffffff), width: 1), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22.0), + borderSide: BorderSide(color: Color(0xffffffff), width: 1), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22.0), + borderSide: BorderSide(color: Color(0xffffffff), width: 1), + ), + hintText: p1, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.all(8), + prefixIcon: Icon(p2, color: Color(0xff000000), size: 24), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding563_2jw4.dart b/lib/src/ui/components/padding563_2jw4.dart new file mode 100644 index 0000000..7329926 --- /dev/null +++ b/lib/src/ui/components/padding563_2jw4.dart @@ -0,0 +1,63 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding563_2jw4 extends StatelessWidget { + final IconData p2; + final String p1; + + Padding563_2jw4(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22.0), + borderSide: BorderSide(color: Color(0xffffffff), width: 1), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22.0), + borderSide: BorderSide(color: Color(0xffffffff), width: 1), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22.0), + borderSide: BorderSide(color: Color(0xffffffff), width: 1), + ), + hintText: p1, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.all(8), + prefixIcon: Icon(p2, color: Color(0xff000000), size: 24), + ), + ), + ); + } +} diff --git a/lib/src/ui/components/padding564_yzg6.dart b/lib/src/ui/components/padding564_yzg6.dart new file mode 100644 index 0000000..e60b8d9 --- /dev/null +++ b/lib/src/ui/components/padding564_yzg6.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding564_yzg6 extends StatelessWidget { + final String p3; + final Color p2; + final VoidCallback p1; + + Padding564_yzg6(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: MaterialButton( + onPressed: p1, + color: p2, + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(22.0), + side: BorderSide(color: Color(0xff3a57e8), width: 1), + ), + padding: EdgeInsets.all(16), + child: Text( + p3, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 45, + minWidth: MediaQuery.of(context).size.width, + ), + ); + } +} diff --git a/lib/src/ui/components/padding5_pcnl.dart b/lib/src/ui/components/padding5_pcnl.dart new file mode 100644 index 0000000..be5b49d --- /dev/null +++ b/lib/src/ui/components/padding5_pcnl.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding5_pcnl extends StatelessWidget { + final String p2; + final String p1; + + Padding5_pcnl(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + p2, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/padding8_wdx9.dart b/lib/src/ui/components/padding8_wdx9.dart new file mode 100644 index 0000000..25cbbd8 --- /dev/null +++ b/lib/src/ui/components/padding8_wdx9.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Padding8_wdx9 extends StatelessWidget { + final String p3; + final String p2; + final String p1; + + Padding8_wdx9(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.fromLTRB(7, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: 160, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 8, 0, 0), + child: Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/components/rating_barbuilder1009_hkzs.dart b/lib/src/ui/components/rating_barbuilder1009_hkzs.dart new file mode 100644 index 0000000..b8dd73e --- /dev/null +++ b/lib/src/ui/components/rating_barbuilder1009_hkzs.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class RatingBarbuilder1009_hkzs extends StatelessWidget { + RatingBarbuilder1009_hkzs({super.key}); + + @override + Widget build(BuildContext context) { + return RatingBar.builder( + initialRating: 4, + unratedColor: Color(0xff9e9e9e), + itemBuilder: (context, index) => + Icon(Icons.star, color: Color(0xffffc107)), + itemCount: 4, + itemSize: 32, + direction: Axis.horizontal, + allowHalfRating: false, + onRatingUpdate: (value) {}, + ); + } +} diff --git a/lib/src/ui/components/row1218_c1cc.dart b/lib/src/ui/components/row1218_c1cc.dart new file mode 100644 index 0000000..68b164f --- /dev/null +++ b/lib/src/ui/components/row1218_c1cc.dart @@ -0,0 +1,97 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Row1218_c1cc extends StatelessWidget { + final String p5; + final VoidCallback p4; + final String p3; + final String p2; + final String p1; + + Row1218_c1cc(this.p5, this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network(p1, fit: BoxFit.cover), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff9e9e9e), + ), + ), + ), + ], + ), + ), + ), + MaterialButton( + onPressed: p4, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(4.0), + ), + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: Text( + p5, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/row1245_305i.dart b/lib/src/ui/components/row1245_305i.dart new file mode 100644 index 0000000..21beec4 --- /dev/null +++ b/lib/src/ui/components/row1245_305i.dart @@ -0,0 +1,48 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Row1245_305i extends StatelessWidget { + final String p1; + + Row1245_305i(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Checkbox( + onChanged: (value) {}, + activeColor: Color(0xffff5630), + autofocus: false, + checkColor: Color(0xffffffff), + hoverColor: Color(0x42000000), + splashRadius: 20, + value: true, + ), + ], + ); + } +} diff --git a/lib/src/ui/components/row1667_tgx9.dart b/lib/src/ui/components/row1667_tgx9.dart new file mode 100644 index 0000000..41621a5 --- /dev/null +++ b/lib/src/ui/components/row1667_tgx9.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Row1667_tgx9 extends StatelessWidget { + final String p3; + final String p2; + final String p1; + + Row1667_tgx9(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x88e34040), + shape: BoxShape.circle, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Container( + height: 55, + width: 55, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network(p1, fit: BoxFit.cover), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + ), + Icon(Icons.arrow_forward_ios, color: Color(0xff7b7c80), size: 18), + ], + ); + } +} diff --git a/lib/src/ui/components/row1927_acsm.dart b/lib/src/ui/components/row1927_acsm.dart new file mode 100644 index 0000000..cbbcefc --- /dev/null +++ b/lib/src/ui/components/row1927_acsm.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Row1927_acsm extends StatefulWidget { + final IconData p5; + final IconData p4; + final IconData p3; + final String p2; + final String p1; + + Row1927_acsm(this.p5, this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + State createState() => _Row1927_acsmState(); +} + +class _Row1927_acsmState extends State { + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 45, + width: 45, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network(widget.p1, fit: BoxFit.cover), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Text( + widget.p2, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Icon(widget.p3, color: Color(0xff212435), size: 24), + ), + SizedBox(width: 8), + Icon(widget.p4, color: Color(0xff212435), size: 24), + SizedBox(width: 8), + Icon(widget.p5, color: Color(0xff212435), size: 24), + SizedBox(width: 8), + ], + ); + } +} diff --git a/lib/src/ui/components/row3264_os4l.dart b/lib/src/ui/components/row3264_os4l.dart new file mode 100644 index 0000000..1a85919 --- /dev/null +++ b/lib/src/ui/components/row3264_os4l.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Row3264_os4l extends StatelessWidget { + final String p2; + final String p1; + + Row3264_os4l(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Container( + width: 130, + height: 40, + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + borderRadius: BorderRadius.circular(0), + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: p2, + items: ["Most Recent", "Daily", "Monthly", "Weekly", "Yearly"] + .map>((String value) { + return DropdownMenuItem( + value: value, + child: Text(value), + ); + }) + .toList(), + style: TextStyle( + color: Color(0xff000000), + fontSize: 16, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + onChanged: (value) {}, + elevation: 8, + isExpanded: true, + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/row703_gnuw.dart b/lib/src/ui/components/row703_gnuw.dart new file mode 100644 index 0000000..5529812 --- /dev/null +++ b/lib/src/ui/components/row703_gnuw.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Row703_gnuw extends StatelessWidget { + final String p4; + final String p3; + final String p2; + final String p1; + + Row703_gnuw(this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network(p1, fit: BoxFit.cover), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + p4, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack1906_s1jy.dart b/lib/src/ui/components/stack1906_s1jy.dart new file mode 100644 index 0000000..b226f48 --- /dev/null +++ b/lib/src/ui/components/stack1906_s1jy.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack1906_s1jy extends StatefulWidget { + final String p2; + final String p1; + + Stack1906_s1jy(this.p2, this.p1, {super.key}); + + @override + State createState() => _Stack1906_s1jyState(); +} + +class _Stack1906_s1jyState extends State { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.topLeft, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(6.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(widget.p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.topRight, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 22, + decoration: BoxDecoration( + color: Color(0xffeb1c1c), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + ), + ), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffece90d), + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack1907_xt28.dart b/lib/src/ui/components/stack1907_xt28.dart new file mode 100644 index 0000000..88db86d --- /dev/null +++ b/lib/src/ui/components/stack1907_xt28.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack1907_xt28 extends StatefulWidget { + final String p2; + final String p1; + + Stack1907_xt28(this.p2, this.p1, {super.key}); + + @override + State createState() => _Stack1907_xt28State(); +} + +class _Stack1907_xt28State extends State { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.topLeft, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(6.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(widget.p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.topRight, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 22, + decoration: BoxDecoration( + color: Color(0xffeb1c1c), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + ), + ), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffece90d), + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack1908_55ms.dart b/lib/src/ui/components/stack1908_55ms.dart new file mode 100644 index 0000000..2d2e8ad --- /dev/null +++ b/lib/src/ui/components/stack1908_55ms.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack1908_55ms extends StatefulWidget { + final String p2; + final String p1; + + Stack1908_55ms(this.p2, this.p1, {super.key}); + + @override + State createState() => _Stack1908_55msState(); +} + +class _Stack1908_55msState extends State { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.topLeft, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(6.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(widget.p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.topRight, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 22, + decoration: BoxDecoration( + color: Color(0xffeb1c1c), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + ), + ), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffece90d), + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack1909_yxtc.dart b/lib/src/ui/components/stack1909_yxtc.dart new file mode 100644 index 0000000..c0bf59b --- /dev/null +++ b/lib/src/ui/components/stack1909_yxtc.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack1909_yxtc extends StatefulWidget { + final String p2; + final String p1; + + Stack1909_yxtc(this.p2, this.p1, {super.key}); + + @override + State createState() => _Stack1909_yxtcState(); +} + +class _Stack1909_yxtcState extends State { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.topLeft, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(6.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(widget.p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.topRight, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 22, + decoration: BoxDecoration( + color: Color(0xffeb1c1c), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + ), + ), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffece90d), + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack1910_yg0l.dart b/lib/src/ui/components/stack1910_yg0l.dart new file mode 100644 index 0000000..43f8f82 --- /dev/null +++ b/lib/src/ui/components/stack1910_yg0l.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack1910_yg0l extends StatefulWidget { + final String p2; + final String p1; + + Stack1910_yg0l(this.p2, this.p1, {super.key}); + + @override + State createState() => _Stack1910_yg0lState(); +} + +class _Stack1910_yg0lState extends State { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.topLeft, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(6.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(widget.p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.topRight, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 22, + decoration: BoxDecoration( + color: Color(0xffeb1c1c), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + ), + ), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffece90d), + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack1911_9sq5.dart b/lib/src/ui/components/stack1911_9sq5.dart new file mode 100644 index 0000000..d24242f --- /dev/null +++ b/lib/src/ui/components/stack1911_9sq5.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack1911_9sq5 extends StatefulWidget { + final String p2; + final String p1; + + Stack1911_9sq5(this.p2, this.p1, {super.key}); + + @override + State createState() => _Stack1911_9sq5State(); +} + +class _Stack1911_9sq5State extends State { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.topLeft, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(6.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(widget.p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.topRight, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 22, + decoration: BoxDecoration( + color: Color(0xffeb1c1c), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + ), + ), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffece90d), + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack1912_btq1.dart b/lib/src/ui/components/stack1912_btq1.dart new file mode 100644 index 0000000..a54eb02 --- /dev/null +++ b/lib/src/ui/components/stack1912_btq1.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack1912_btq1 extends StatefulWidget { + final String p2; + final String p1; + + Stack1912_btq1(this.p2, this.p1, {super.key}); + + @override + State createState() => _Stack1912_btq1State(); +} + +class _Stack1912_btq1State extends State { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.topLeft, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(6.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(widget.p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.topRight, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 22, + decoration: BoxDecoration( + color: Color(0xffeb1c1c), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + ), + ), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffece90d), + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack1913_cao7.dart b/lib/src/ui/components/stack1913_cao7.dart new file mode 100644 index 0000000..7b85b78 --- /dev/null +++ b/lib/src/ui/components/stack1913_cao7.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack1913_cao7 extends StatefulWidget { + final String p2; + final String p1; + + Stack1913_cao7(this.p2, this.p1, {super.key}); + + @override + State createState() => _Stack1913_cao7State(); +} + +class _Stack1913_cao7State extends State { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.topLeft, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(6.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(widget.p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.topRight, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 22, + decoration: BoxDecoration( + color: Color(0xffeb1c1c), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + ), + ), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffece90d), + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack1914_hvm6.dart b/lib/src/ui/components/stack1914_hvm6.dart new file mode 100644 index 0000000..5146de6 --- /dev/null +++ b/lib/src/ui/components/stack1914_hvm6.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack1914_hvm6 extends StatefulWidget { + final String p2; + final String p1; + + Stack1914_hvm6(this.p2, this.p1, {super.key}); + + @override + State createState() => _Stack1914_hvm6State(); +} + +class _Stack1914_hvm6State extends State { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.topLeft, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(6.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(widget.p1), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.topRight, + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 22, + decoration: BoxDecoration( + color: Color(0xffeb1c1c), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + ), + ), + child: Text( + widget.p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffece90d), + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack2339_cb92.dart b/lib/src/ui/components/stack2339_cb92.dart new file mode 100644 index 0000000..6cc3fb8 --- /dev/null +++ b/lib/src/ui/components/stack2339_cb92.dart @@ -0,0 +1,116 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack2339_cb92 extends StatelessWidget { + final String p5; + final VoidCallback p4; + final String p3; + final String p2; + final String p1; + + Stack2339_cb92(this.p5, this.p4, this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + p2, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 4, horizontal: 0), + child: Text( + p3, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: p4, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + p5, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0x110b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack2554_yhdm.dart b/lib/src/ui/components/stack2554_yhdm.dart new file mode 100644 index 0000000..d4bfabd --- /dev/null +++ b/lib/src/ui/components/stack2554_yhdm.dart @@ -0,0 +1,67 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack2554_yhdm extends StatefulWidget { + final String p1; + + Stack2554_yhdm(this.p1, {super.key}); + + @override + State createState() => _Stack2554_yhdmState(); +} + +class _Stack2554_yhdmState extends State { + final pageController = PageController(); + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + PageView.builder( + controller: pageController, + scrollDirection: Axis.horizontal, + itemCount: 4, + itemBuilder: (context, position) { + return Align( + alignment: Alignment(0.0, -0.3), + child: Image.network( + widget.p1, + height: MediaQuery.of(context).size.height * 0.4, + width: MediaQuery.of(context).size.width * 0.8, + fit: BoxFit.cover, + ), + ); + }, + ), + Align( + alignment: Alignment.bottomCenter, + child: Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 30), + child: SmoothPageIndicator( + controller: pageController, + count: 4, + axisDirection: Axis.horizontal, + effect: WormEffect( + dotColor: Color(0xff5598ff), + activeDotColor: Color(0xffffffff), + dotHeight: 12, + dotWidth: 12, + radius: 16, + spacing: 8, + ), + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3205_puva.dart b/lib/src/ui/components/stack3205_puva.dart new file mode 100644 index 0000000..ab283c7 --- /dev/null +++ b/lib/src/ui/components/stack3205_puva.dart @@ -0,0 +1,81 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3205_puva extends StatelessWidget { + final String p3; + final String p2; + final String p1; + + Stack3205_puva(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: 180, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Align( + alignment: Alignment.center, + child: Container( + margin: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + padding: EdgeInsets.all(4), + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0xff000000), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa3a3a3), + ), + ), + ), + ], + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3208_5dv2.dart b/lib/src/ui/components/stack3208_5dv2.dart new file mode 100644 index 0000000..a851a34 --- /dev/null +++ b/lib/src/ui/components/stack3208_5dv2.dart @@ -0,0 +1,81 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3208_5dv2 extends StatelessWidget { + final String p3; + final String p2; + final String p1; + + Stack3208_5dv2(this.p3, this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage(p1), + height: 180, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Align( + alignment: Alignment.center, + child: Container( + margin: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + padding: EdgeInsets.all(4), + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0xff000000), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + p3, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa3a3a3), + ), + ), + ), + ], + ), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3231_qtc6.dart b/lib/src/ui/components/stack3231_qtc6.dart new file mode 100644 index 0000000..3c24530 --- /dev/null +++ b/lib/src/ui/components/stack3231_qtc6.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3231_qtc6 extends StatelessWidget { + final String p2; + final String p1; + + Stack3231_qtc6(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0x6e000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(16.0), + ), + ), + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3231_thkh.dart b/lib/src/ui/components/stack3231_thkh.dart new file mode 100644 index 0000000..89d2140 --- /dev/null +++ b/lib/src/ui/components/stack3231_thkh.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3231_thkh extends StatelessWidget { + final String p2; + final String p1; + + Stack3231_thkh(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0x6e000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(16.0), + ), + ), + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3232_hcgu.dart b/lib/src/ui/components/stack3232_hcgu.dart new file mode 100644 index 0000000..568503e --- /dev/null +++ b/lib/src/ui/components/stack3232_hcgu.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3232_hcgu extends StatelessWidget { + final String p2; + final String p1; + + Stack3232_hcgu(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0x6e000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(16.0), + ), + ), + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3232_t74i.dart b/lib/src/ui/components/stack3232_t74i.dart new file mode 100644 index 0000000..43143dd --- /dev/null +++ b/lib/src/ui/components/stack3232_t74i.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3232_t74i extends StatelessWidget { + final String p2; + final String p1; + + Stack3232_t74i(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0x6e000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(16.0), + ), + ), + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3233_o59n.dart b/lib/src/ui/components/stack3233_o59n.dart new file mode 100644 index 0000000..feae039 --- /dev/null +++ b/lib/src/ui/components/stack3233_o59n.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3233_o59n extends StatelessWidget { + final String p2; + final String p1; + + Stack3233_o59n(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0x6e000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(16.0), + ), + ), + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3234_ew9q.dart b/lib/src/ui/components/stack3234_ew9q.dart new file mode 100644 index 0000000..a4409dd --- /dev/null +++ b/lib/src/ui/components/stack3234_ew9q.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3234_ew9q extends StatelessWidget { + final String p2; + final String p1; + + Stack3234_ew9q(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0x6e000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(16.0), + ), + ), + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3235_ayay.dart b/lib/src/ui/components/stack3235_ayay.dart new file mode 100644 index 0000000..d321374 --- /dev/null +++ b/lib/src/ui/components/stack3235_ayay.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3235_ayay extends StatelessWidget { + final String p2; + final String p1; + + Stack3235_ayay(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0x6e000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(16.0), + ), + ), + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/stack3236_u65x.dart b/lib/src/ui/components/stack3236_u65x.dart new file mode 100644 index 0000000..6cfdb39 --- /dev/null +++ b/lib/src/ui/components/stack3236_u65x.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Stack3236_u65x extends StatelessWidget { + final String p2; + final String p1; + + Stack3236_u65x(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: Image( + image: NetworkImage(p1), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0x6e000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(16.0), + ), + ), + Text( + p2, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ], + ); + } +} diff --git a/lib/src/ui/components/switch_list_tile1212_w9oz.dart b/lib/src/ui/components/switch_list_tile1212_w9oz.dart new file mode 100644 index 0000000..0eb9639 --- /dev/null +++ b/lib/src/ui/components/switch_list_tile1212_w9oz.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class SwitchListTile1212_w9oz extends StatelessWidget { + final String p1; + + SwitchListTile1212_w9oz(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return SwitchListTile( + value: true, + title: Text( + p1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + textAlign: TextAlign.start, + ), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + onChanged: (value) {}, + tileColor: Color(0xffffffff), + activeColor: Color(0xff3a57e8), + activeTrackColor: Color(0x343a57e8), + controlAffinity: ListTileControlAffinity.trailing, + dense: true, + inactiveThumbColor: Color(0xff9e9e9e), + inactiveTrackColor: Color(0xffe0e0e0), + contentPadding: EdgeInsets.all(0), + selected: false, + selectedTileColor: Color(0x42000000), + ); + } +} diff --git a/lib/src/ui/components/text12_uxqe.dart b/lib/src/ui/components/text12_uxqe.dart new file mode 100644 index 0000000..f93f4f8 --- /dev/null +++ b/lib/src/ui/components/text12_uxqe.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Text12_uxqe extends StatelessWidget { + final String p1; + + Text12_uxqe(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Text( + p1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xffffffff), + ), + ); + } +} diff --git a/lib/src/ui/components/text1342_x667.dart b/lib/src/ui/components/text1342_x667.dart new file mode 100644 index 0000000..5cfe07f --- /dev/null +++ b/lib/src/ui/components/text1342_x667.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Text1342_x667 extends StatelessWidget { + final String p1; + + Text1342_x667(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return Text( + p1, + textAlign: TextAlign.left, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ); + } +} diff --git a/lib/src/ui/components/text_field1926_332s.dart b/lib/src/ui/components/text_field1926_332s.dart new file mode 100644 index 0000000..aaac6c7 --- /dev/null +++ b/lib/src/ui/components/text_field1926_332s.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class TextField1926_332s extends StatefulWidget { + final IconData p2; + final String p1; + + TextField1926_332s(this.p2, this.p1, {super.key}); + + @override + State createState() => _TextField1926_332sState(); +} + +class _TextField1926_332sState extends State { + @override + Widget build(BuildContext context) { + return TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide(color: Color(0xffa7a4a4), width: 1), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide(color: Color(0xffa7a4a4), width: 1), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide(color: Color(0xffa7a4a4), width: 1), + ), + hintText: widget.p1, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffa29f9f), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.all(8), + prefixIcon: Icon(Icons.search, color: Color(0xffa29f9f), size: 24), + suffixIcon: Icon(widget.p2, color: Color(0xffa29f9f), size: 24), + ), + ); + } +} diff --git a/lib/src/ui/components/text_field561_jhkd.dart b/lib/src/ui/components/text_field561_jhkd.dart new file mode 100644 index 0000000..c9db70a --- /dev/null +++ b/lib/src/ui/components/text_field561_jhkd.dart @@ -0,0 +1,60 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class TextField561_jhkd extends StatelessWidget { + final IconData p2; + final String p1; + + TextField561_jhkd(this.p2, this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22.0), + borderSide: BorderSide(color: Color(0xffffffff), width: 1), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22.0), + borderSide: BorderSide(color: Color(0xffffffff), width: 1), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22.0), + borderSide: BorderSide(color: Color(0xffffffff), width: 1), + ), + hintText: p1, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xfffefeff), + isDense: false, + contentPadding: EdgeInsets.all(8), + prefixIcon: Icon(p2, color: Color(0xff000000), size: 24), + ), + ); + } +} diff --git a/lib/src/ui/components/text_field710_3r6r.dart b/lib/src/ui/components/text_field710_3r6r.dart new file mode 100644 index 0000000..4bedc7e --- /dev/null +++ b/lib/src/ui/components/text_field710_3r6r.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class TextField710_3r6r extends StatelessWidget { + final String p1; + + TextField710_3r6r(this.p1, {super.key}); + + @override + Widget build(BuildContext context) { + return TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12.0), + borderSide: BorderSide(color: Color(0x00000000), width: 1), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12.0), + borderSide: BorderSide(color: Color(0x00000000), width: 1), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12.0), + borderSide: BorderSide(color: Color(0x00000000), width: 1), + ), + hintText: p1, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff9f9d9d), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric(vertical: 8, horizontal: 12), + prefixIcon: Icon(Icons.search, color: Color(0xff9f9d9d), size: 24), + ), + ); + } +} diff --git a/lib/src/ui/views/_views.dart b/lib/src/ui/views/_views.dart new file mode 100644 index 0000000..1d44c7e --- /dev/null +++ b/lib/src/ui/views/_views.dart @@ -0,0 +1,32 @@ +export 'audio_article_60rn.dart'; +export 'empty_pin_notes_1l1v.dart'; +export 'labels_sxue.dart'; +export 'login_qayv.dart'; +export 'dashboard_jvxm.dart'; +export 'data_not_found_f1qf.dart'; +export 'contact_us_inkn.dart'; +export 'review_47su.dart'; +export 'chat_n9xm.dart'; +export 'bookmark_2rub.dart'; +export 'detail_dm5h.dart'; +export 'no_data_found_shk8.dart'; +export 'change_password_5ugn.dart'; +export 'splash_p2g8.dart'; +export 'membership_z9ze.dart'; +export 'verification_nhug.dart'; +export 'discover_au68.dart'; +export 'forgot_password_xt11.dart'; +export 'grid_kcdz.dart'; +export 'notification_setting_bycd.dart'; +export 'about_us.dart'; +export 'pin_note_list_qn8a.dart'; +export 'welcome_g72w.dart'; +export 'following_s3l5.dart'; +export 'setting_pano.dart'; +export 'category_e0b3.dart'; +export 'register_obmz.dart'; +export 'my_account_tyvz.dart'; +export 'news_details_t6nw.dart'; +export 'home_cigx.dart'; +export 'list_1eal.dart'; +export 'profile_pzn0.dart'; diff --git a/lib/src/ui/views/about_us.dart b/lib/src/ui/views/about_us.dart new file mode 100644 index 0000000..45c8fc8 --- /dev/null +++ b/lib/src/ui/views/about_us.dart @@ -0,0 +1,152 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AboutUsView extends StatefulWidget { + final Object? extra; + + AboutUsView({super.key, this.extra}); + + @override + State createState() => _AboutUsViewState(); +} + +class _AboutUsViewState extends State { + late AboutUsController _view; + + @override + void initState() { + super.initState(); + _view = AboutUsController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.aboutUs_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.myApp_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontFamily: GoogleFonts.getFont('Montserrat').fontFamily, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 24, + color: Color(0xff000000), + ), + ), + Text( + Constants.indiasLargetsFashionApp_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Opacity( + opacity: 0.5, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/GCCDJ67/into-success-group-young-freelancers-office-have-conversation-smiling-146671-13567.jpg', + ), + height: 220, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: Text( + Constants.loremIpsumIsSimplyDummyTe_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff222020), + ), + ), + ), + Padding3297_l244( + Constants.testgmailcom_, + Constants.forAnyPressAndMediaInquir_, + Constants.loremIpsumDolorSitAmetCo_, + Constants.misson_, + Constants.itIsALongEstablishedFact_, + Constants.vision_, + ), + ], + ), + ), + ), + ), + ); + } +} + +class AboutUsController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/audio_article_60rn.dart b/lib/src/ui/views/audio_article_60rn.dart new file mode 100644 index 0000000..00990a9 --- /dev/null +++ b/lib/src/ui/views/audio_article_60rn.dart @@ -0,0 +1,466 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AudioArticle_60rnView extends StatefulWidget { + final Object? extra; + + AudioArticle_60rnView({super.key, this.extra}); + + @override + State createState() => _AudioArticle_60rnViewState(); +} + +class _AudioArticle_60rnViewState extends State { + late AudioArticle_60rnController _view; + + @override + void initState() { + super.initState(); + _view = AudioArticle_60rnController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar2671_1agg(() { + view._click(); + }, Constants.audioArticle_), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.all(16), + child: Text( + Constants.continueListening_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + height: 190, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0x4dffffff), width: 1), + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + shrinkWrap: false, + physics: ScrollPhysics(), + children: [ + Padding2654_rvnw( + Constants.k3201_, + Constants.howToStartYourUXDesignCa_, + 'https://i.ibb.co/jgzmNKz/cartoon-graphic-design-landing-page-52683-70881.jpg', + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: SizedBox( + height: 170, + width: 150, + child: Stack( + alignment: Alignment.bottomCenter, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/dQWbrZN/graphic-designer-top-view-mockup-with-laptop-23-2147675736.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0xa04e4b4b), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.learningAboutDesignThinking_, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + Row( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Slider( + onChanged: (value) {}, + value: 8, + min: 0, + max: 10, + activeColor: Color(0xffffffff), + inactiveColor: Color(0xff9e9e9e), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB( + 0, + 0, + 16, + 0, + ), + child: Text( + Constants.k4000_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ], + ), + ], + ), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 16, 0, 16), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding2656_z413(Constants.allNews_), + Padding2657_r22y(Constants.tech_), + Padding2658_p1zk(Constants.fashion_), + Padding2659_acub(Constants.art_), + Padding2660_8c7p(Constants.politics_), + Padding2661_qzry(Constants.sports_), + Padding2662_bl2j(Constants.science_), + ], + ), + ), + ), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + children: [ + Padding2663_fus1( + Constants.k20June2019_, + Constants.shouldDesignerIsAbleToCod_, + Constants.design_, + 'https://i.ibb.co/Y8g25GC/realistic-ui-ux-background-52683-68896.jpg', + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/3NTCBFn/dae-jang-geum-park-korean-historical-drama-south-korea-335224-516.jpg', + ), + height: 90, + width: 90, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.lifeStyle_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + Constants.k6MonthsExperienceLivingIn_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.k25Jan2020_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ], + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/Hzssmsx/soccer-stadium-1284-22432.jpg', + ), + height: 90, + width: 90, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.sports_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + Constants.predictionAboutWhoWillWin_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.k25Jan2020_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ], + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/Y8g25GC/realistic-ui-ux-background-52683-68896.jpg', + ), + height: 90, + width: 90, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.design_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + Constants.shouldDesignerIsAbleToCod_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.k25Jan2020_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + ), + ); + } +} + +class AudioArticle_60rnController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/bookmark_2rub.dart b/lib/src/ui/views/bookmark_2rub.dart new file mode 100644 index 0000000..366abc9 --- /dev/null +++ b/lib/src/ui/views/bookmark_2rub.dart @@ -0,0 +1,184 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Bookmark_2rubView extends StatefulWidget { + final Object? extra; + + Bookmark_2rubView({super.key, this.extra}); + + @override + State createState() => _Bookmark_2rubViewState(); +} + +class _Bookmark_2rubViewState extends State { + late Bookmark_2rubController _view; + + @override + void initState() { + super.initState(); + _view = Bookmark_2rubController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.bookmark_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row3264_os4l(Constants.mostRecent_, Constants.sortBy_), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Padding3261_vzwy( + Constants.k12Jan2021_, + Constants.aSmartRobotFromHeroCompan_, + Constants.technology_, + 'https://i.ibb.co/D8Lsh6x/ai-nuclear-energy-industry-innovation-smart-grid-disruptive-technology-53876-143121.jpg', + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(12.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/yYJ6S0k/young-woman-with-shopping-bags-beautiful-dress-1303-17550.jpg', + ), + height: 100, + width: 100, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 8, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.fashion_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + Constants.whyDoPlainTshirtsMakeUs_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.k13June2020_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff605f5f), + ), + ), + ], + ), + ), + ), + Icon( + Icons.more_vert, + color: Color(0xff212435), + size: 24, + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + ), + ); + } +} + +class Bookmark_2rubController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/category_e0b3.dart b/lib/src/ui/views/category_e0b3.dart new file mode 100644 index 0000000..ac03b36 --- /dev/null +++ b/lib/src/ui/views/category_e0b3.dart @@ -0,0 +1,128 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Category_e0b3View extends StatefulWidget { + final Object? extra; + + Category_e0b3View({super.key, this.extra}); + + @override + State createState() => _Category_e0b3ViewState(); +} + +class _Category_e0b3ViewState extends State { + late Category_e0b3Controller _view; + + @override + void initState() { + super.initState(); + _view = Category_e0b3Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.categories_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: GridView( + padding: EdgeInsets.all(16), + shrinkWrap: true, + scrollDirection: Axis.vertical, + physics: ClampingScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 8, + mainAxisSpacing: 8, + childAspectRatio: 1, + ), + children: [ + Stack3231_thkh( + Constants.fashion_, + 'https://i.ibb.co/yYJ6S0k/young-woman-with-shopping-bags-beautiful-dress-1303-17550.jpg', + ), + Stack3232_t74i( + Constants.art_, + 'https://i.ibb.co/W3PCjpS/picture-with-drawing-man-s-face-1122-1031.jpg', + ), + Stack3233_o59n( + Constants.sports_, + 'https://i.ibb.co/NsC3bBS/gradient-national-sports-day-illustration-23-2148995776.jpg', + ), + Stack3234_ew9q( + Constants.science_, + 'https://i.ibb.co/wJFzN9H/3d-medical-background-with-male-figure-with-brain-virus-cells-1048-5871.jpg', + ), + Stack3235_ayay( + Constants.politics_, + 'https://i.ibb.co/ZhZNqRs/tribune-crowd-realistic-composition-1284-26565.jpg', + ), + Stack3236_u65x( + Constants.design_, + 'https://i.ibb.co/yYJ6S0k/young-woman-with-shopping-bags-beautiful-dress-1303-17550.jpg', + ), + Stack3232_hcgu( + Constants.art_, + 'https://i.ibb.co/W3PCjpS/picture-with-drawing-man-s-face-1122-1031.jpg', + ), + Stack3231_qtc6( + Constants.fashion_, + 'https://i.ibb.co/yYJ6S0k/young-woman-with-shopping-bags-beautiful-dress-1303-17550.jpg', + ), + ], + ), + ), + ), + ); + } +} + +class Category_e0b3Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/change_password_5ugn.dart b/lib/src/ui/views/change_password_5ugn.dart new file mode 100644 index 0000000..1bae450 --- /dev/null +++ b/lib/src/ui/views/change_password_5ugn.dart @@ -0,0 +1,326 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ChangePassword_5ugnView extends StatefulWidget { + final Object? extra; + + ChangePassword_5ugnView({super.key, this.extra}); + + @override + State createState() => + _ChangePassword_5ugnViewState(); +} + +class _ChangePassword_5ugnViewState extends State { + late ChangePassword_5ugnController _view; + + @override + void initState() { + super.initState(); + _view = ChangePassword_5ugnController() + ..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xff3a57e8), + body: SizedBox( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: Stack( + alignment: Alignment.topLeft, + children: [ + Container( + margin: EdgeInsets.fromLTRB(0, 150, 0, 0), + padding: EdgeInsets.all(0), + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16.0), + topRight: Radius.circular(16.0), + ), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Padding( + padding: EdgeInsets.fromLTRB(16, 40, 16, 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.symmetric( + vertical: 16, + horizontal: 0, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + IconButton( + icon: Icon( + Icons.arrow_back, + color: Color(0xff212435), + size: 24, + ), + onPressed: () { + app.back(); + }, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Text( + Constants.resetPassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + Text( + Constants.createYourNewPasswordInFl_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 16), + child: Text( + Constants.createNewPassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff494949), + ), + ), + ), + TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + hintText: Constants.enterNewPassword_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa4a4a4), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + prefixIcon: Icon( + Icons.lock_open, + color: Color(0xff212435), + size: 24, + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 16, + horizontal: 0, + ), + child: Text( + Constants.createConfirmPassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff494949), + ), + ), + ), + TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + hintText: Constants.enterConfirmPassword_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa4a4a4), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + prefixIcon: Icon( + Icons.lock_open, + color: Color(0xff212435), + size: 24, + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 0), + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.resetPassword_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 45, + minWidth: MediaQuery.of(context).size.width, + ), + ), + ], + ), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 120, 0, 0), + child: Container( + height: 80, + width: 80, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://cdn2.iconfinder.com/data/icons/blue-round-amazing-icons-2/512/lock-128.png', + fit: BoxFit.cover, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class ChangePassword_5ugnController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/chat_n9xm.dart b/lib/src/ui/views/chat_n9xm.dart new file mode 100644 index 0000000..acf8d11 --- /dev/null +++ b/lib/src/ui/views/chat_n9xm.dart @@ -0,0 +1,716 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Chat_n9xmView extends StatefulWidget { + final Object? extra; + + Chat_n9xmView({super.key, this.extra}); + + @override + State createState() => _Chat_n9xmViewState(); +} + +class _Chat_n9xmViewState extends State { + late Chat_n9xmController _view; + + @override + void initState() { + super.initState(); + _view = Chat_n9xmController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: Stack( + alignment: Alignment.topLeft, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.symmetric(vertical: 30, horizontal: 16), + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + IconButton( + icon: Icon( + Icons.arrow_back_ios, + color: Color(0xffffffff), + size: 24, + ), + onPressed: () { + app.back(); + }, + ), + Container( + height: 40, + width: 40, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://i.ibb.co/4Kwc7Gh/woman-takes-images-holding-photographic-camera-hands-176532-12497.jpg', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Text( + Constants.aktaParmar_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ), + ), + Icon(Icons.video_call, color: Color(0xffffffff), size: 24), + Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + child: Icon( + Icons.call, + color: Color(0xffffffff), + size: 24, + ), + ), + Icon(Icons.more_vert, color: Color(0xffffffff), size: 24), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 85, 0, 0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0xfff2f2f2), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16.0), + topRight: Radius.circular(16.0), + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.all(16), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Align( + alignment: Alignment.center, + child: Text( + Constants.today_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 50, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorningGoodMorningGoo_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topRight, + margin: EdgeInsets.fromLTRB(50, 16, 0, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.min, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorning_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 50, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.helloHowAreYou_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topRight, + margin: EdgeInsets.fromLTRB(50, 16, 0, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.helloIAmFineAndYou_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topLeft, + margin: EdgeInsets.fromLTRB(0, 16, 50, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.iAmFine_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topRight, + margin: EdgeInsets.fromLTRB(50, 16, 0, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorningGoodMorningGo_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topLeft, + margin: EdgeInsets.fromLTRB(0, 16, 50, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorningGoodMorningGoo_1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topRight, + margin: EdgeInsets.fromLTRB(50, 16, 0, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorning_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.all(8), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ImageIcon( + NetworkImage( + 'https://cdn3.iconfinder.com/data/icons/lightly-icons/24/happy-96.png', + ), + size: 24, + color: Color(0xff989898), + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: ImageIcon( + NetworkImage( + 'https://cdn2.iconfinder.com/data/icons/pictograms-3/512/27-128.png', + ), + size: 24, + color: Color(0xff989898), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(30.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(30.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(30.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: true, + contentPadding: EdgeInsets.all(16), + suffixIcon: Icon( + Icons.photo_camera, + color: Color(0xff989898), + size: 24, + ), + ), + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 50, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4dffffff), + width: 1, + ), + ), + child: ImageIcon( + NetworkImage( + 'https://cdn4.iconfinder.com/data/icons/symbol-blue-set-1/100/Untitled-2-80-128.png', + ), + size: 24, + color: Color(0xffffffff), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ), + ); + } +} + +class Chat_n9xmController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/contact_us_inkn.dart b/lib/src/ui/views/contact_us_inkn.dart new file mode 100644 index 0000000..954a127 --- /dev/null +++ b/lib/src/ui/views/contact_us_inkn.dart @@ -0,0 +1,312 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ContactUs_inknView extends StatefulWidget { + final Object? extra; + + ContactUs_inknView({super.key, this.extra}); + + @override + State createState() => _ContactUs_inknViewState(); +} + +class _ContactUs_inknViewState extends State { + late ContactUs_inknController _view; + + @override + void initState() { + super.initState(); + _view = ContactUs_inknController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.contact_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xffffffff), + ), + ), + leading: IconButton( + icon: Icon(Icons.menu, color: Color(0xffffffff), size: 24), + onPressed: () { + view._click(); + }, + ), + actions: [ + Icon(Icons.more_vert, color: Color(0xffffffff), size: 24), + ], + ), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(Icons.mail, color: Color(0xff3a57e8), size: 18), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: TextField( + controller: TextEditingController( + text: Constants.johngmailcom_, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.email_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.all(8), + ), + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(Icons.call, color: Color(0xff3a57e8), size: 18), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: TextField( + controller: TextEditingController( + text: Constants.k91987654321_, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.phone_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.all(8), + ), + ), + ), + ), + ], + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(Icons.message, color: Color(0xff3a57e8), size: 18), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: TextField( + controller: TextEditingController( + text: Constants.loremIpsumIsSimplyDummyTe_1, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 3, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.message_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.all(8), + ), + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 0), + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.zero, + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.sEND_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 40, + minWidth: 140, + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class ContactUs_inknController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/dashboard_jvxm.dart b/lib/src/ui/views/dashboard_jvxm.dart new file mode 100644 index 0000000..9053e74 --- /dev/null +++ b/lib/src/ui/views/dashboard_jvxm.dart @@ -0,0 +1,626 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Dashboard_jvxmView extends StatefulWidget { + final Object? extra; + + Dashboard_jvxmView({super.key, this.extra}); + + @override + State createState() => _Dashboard_jvxmViewState(); +} + +class _Dashboard_jvxmViewState extends State { + late Dashboard_jvxmController _view; + + @override + void initState() { + super.initState(); + _view = Dashboard_jvxmController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar2944_rotl(Constants.home_), + body: Stack( + alignment: Alignment.topLeft, + children: [ + SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.all(16), + child: Text( + Constants.notebooks_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + height: 170, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Container2930_qyoo( + Constants.youtubeIdeas_, + 'https://cdn4.iconfinder.com/data/icons/xicons/25/xicons_about_book-128.png', + Icons.more_horiz, + Icons.push_pin, + ), + Container( + margin: EdgeInsets.fromLTRB(0, 0, 16, 0), + padding: EdgeInsets.all(12), + width: 150, + height: 170, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 16, width: 16), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + ImageIcon( + NetworkImage( + 'https://cdn4.iconfinder.com/data/icons/xicons/25/xicons_about_book-128.png', + ), + size: 80, + color: Color(0xff3a57e8), + ), + Text( + Constants.userResearchMovieApp_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 0, 16, 0), + padding: EdgeInsets.all(12), + width: 150, + height: 170, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 16, width: 16), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + ImageIcon( + NetworkImage( + 'https://cdn4.iconfinder.com/data/icons/xicons/25/xicons_about_book-128.png', + ), + size: 80, + color: Color(0xffe4c00d), + ), + Text( + Constants.webDevelopPortfolio_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ], + ), + ), + Container2930_2rhj( + Constants.youtubeIdeas_, + 'https://cdn4.iconfinder.com/data/icons/xicons/25/xicons_about_book-128.png', + Icons.more_horiz, + Icons.push_pin, + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 16, 16, 0), + child: Text( + Constants.notes_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + GridView( + padding: EdgeInsets.all(16), + shrinkWrap: true, + scrollDirection: Axis.vertical, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 16, + mainAxisSpacing: 16, + childAspectRatio: 0.6, + ), + children: [ + Container2933_cvn3( + Constants.ideas_, + Constants.loremIpsumOrLipsumAsItI_, + Constants.webIdeas_, + Icons.more_horiz, + Icons.push_pin, + ), + Container2934_5anc( + Constants.uX_, + Constants.loremIpsumOrLipsumAsItI_, + Constants.theRoleOfCreativityInUXD_, + Icons.more_horiz, + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 16, width: 16), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.chap1_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + Constants.loremIpsumOrLipsumAsItI_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + Constants.story_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.push_pin, + color: Color(0xffffc000), + size: 24, + ), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.chap2_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + Constants.loremIpsumOrLipsumAsItI_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + Constants.ideas_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.push_pin, + color: Color(0xffffc000), + size: 24, + ), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.webIdeas_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + Constants.loremIpsumOrLipsumAsItI_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + Constants.ideas_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.push_pin, + color: Color(0xffffc000), + size: 24, + ), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.chap3_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + Constants.loremIpsumOrLipsumAsItI_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + Constants.story_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + Align2939_fgkc(Icons.add), + ], + ), + ), + ), + ); + } +} + +class Dashboard_jvxmController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/data_not_found_f1qf.dart b/lib/src/ui/views/data_not_found_f1qf.dart new file mode 100644 index 0000000..03a75f1 --- /dev/null +++ b/lib/src/ui/views/data_not_found_f1qf.dart @@ -0,0 +1,147 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class DataNotFound_f1qfView extends StatefulWidget { + final Object? extra; + + DataNotFound_f1qfView({super.key, this.extra}); + + @override + State createState() => _DataNotFound_f1qfViewState(); +} + +class _DataNotFound_f1qfViewState extends State { + late DataNotFound_f1qfController _view; + + @override + void initState() { + super.initState(); + _view = DataNotFound_f1qfController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + body: Stack( + alignment: Alignment.topLeft, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/g7pKbhg/old-black-background-grunge-texture-dark-wallpaper-blackboard-chalkboard-room-wall-1258-28312.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.noInternet_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 24, + color: Color(0xffbbbaba), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 8), + child: Text( + Constants.connection_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 26, + color: Color(0xffffffff), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 30), + child: Text( + Constants.pleaseCheckYourInternetCon_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffbbbaba), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xffffffff), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.tRYAGAIN_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xff000000), + height: 40, + minWidth: 140, + ), + ], + ), + ), + ], + ), + ), + ), + ); + } +} + +class DataNotFound_f1qfController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/detail_dm5h.dart b/lib/src/ui/views/detail_dm5h.dart new file mode 100644 index 0000000..40e30e4 --- /dev/null +++ b/lib/src/ui/views/detail_dm5h.dart @@ -0,0 +1,216 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Detail_dm5hView extends StatefulWidget { + final Object? extra; + + Detail_dm5hView({super.key, this.extra}); + + @override + State createState() => _Detail_dm5hViewState(); +} + +class _Detail_dm5hViewState extends State { + late Detail_dm5hController _view; + + @override + void initState() { + super.initState(); + _view = Detail_dm5hController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Stack( + alignment: Alignment.topLeft, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://images.unsplash.com/photo-1599669454699-248893623440?ixid=MnwxMjA3fDB8MHxzZWFyY2h8MTd8fGhlYWRwaG9uZXN8ZW58MHx8MHx8&ixlib=rb-1.2.1&w=1000&q=80', + ), + height: MediaQuery.of(context).size.height * 0.5, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 30, + height: 30, + decoration: BoxDecoration( + color: Color(0x1f000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Padding( + padding: EdgeInsets.fromLTRB(16, 16, 0, 0), + child: IconButton( + icon: Icon( + Icons.arrow_back_ios, + color: Color(0xffffffff), + size: 24, + ), + onPressed: () { + app.back(); + }, + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.all(16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.shopping_cart, + color: Color(0xff3a57e8), + size: 18, + ), + Padding( + padding: EdgeInsets.fromLTRB(7, 0, 0, 0), + child: Text( + Constants.shopping_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + Padding2520_wweb( + Icons.insert_link, + Constants.a1QVBVDBF1222_, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.loremIpsumOrLipsumAsItI_1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + Padding2522_3z73(Constants.deliveryLocation_), + Padding2523_p4he( + Constants.k01362Tbilisi_, + Constants.k2PetreMelikshliSt_, + Icons.location_on, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.uSD1990_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.addToCart_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 42, + minWidth: MediaQuery.of(context).size.width, + ), + ), + ], + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Detail_dm5hController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/discover_au68.dart b/lib/src/ui/views/discover_au68.dart new file mode 100644 index 0000000..c49b545 --- /dev/null +++ b/lib/src/ui/views/discover_au68.dart @@ -0,0 +1,496 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Discover_au68View extends StatefulWidget { + final Object? extra; + + Discover_au68View({super.key, this.extra}); + + @override + State createState() => _Discover_au68ViewState(); +} + +class _Discover_au68ViewState extends State { + late Discover_au68Controller _view; + + @override + void initState() { + super.initState(); + _view = Discover_au68Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xff3a57e8), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.recentlyPlayed_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ), + body: Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 160, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Padding1_p779( + Constants.newMusicHindi_, + 'https://1.bp.blogspot.com/-Sfm1TVjYa8o/YEmNsLz6WNI/AAAAAAAADoE/WO7H_uaBtbkKXE0UiPeXn0P1gGSAGijJwCLcBGAsYHQ/s1280/maxresdefault%2B%25283%2529.jpg', + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.scdn.co/image/ab67616d0000b27314621522f43a17b1f0cfb565', + ), + height: 120, + width: 110, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.mTVCoke_, + textAlign: TextAlign.center, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRCD69ZCvQ8FdZG3VwTaIDVuQZ62tdd0zKujg&usqp=CAU', + ), + height: 120, + width: 110, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.bollywoordButter_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 8, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.scdn.co/image/ab67616d0000b27314621522f43a17b1f0cfb565', + ), + height: 120, + width: 110, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k90sRewind_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 8, 16, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 50, + width: 50, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcThsMMUK5ykC_JusWVz8opNfuNsYNwNMVLUDdFsGg2sW6gWyFL1mxCm818QkjpUZo_RlmI&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.moreLike_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.aRRahman_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 180, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Padding5_pcnl( + Constants.vishalShekharAtifAslam_, + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSejp88_U6iaR-vNPvZUdgj1omlqdK5M6apdBhq5g1jKCGOAbUYsg9yd3Hx6zG5SR3NcGc&usqp=CAU', + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTDOjj0NZafV2BhUZOeJArqdFIM6Dn22Q6Uu2quiinylIONzg5yB7l1eDwzB9p44VtRhHM&usqp=CAU', + ), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 8, 0, 0), + child: Text( + Constants.sheryaGhoshval_, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSddOVWcVocDfTWl1Ent0iSpT099wKm7osDco50KMLoSFOLEpXNKB5TT1_V1KBvShC6on0&usqp=CAU', + ), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 8, 0, 0), + child: Text( + Constants.darshanRaval_, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Align( + alignment: Alignment.centerLeft, + child: Text12_uxqe(Constants.popularMusic_), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 220, + decoration: BoxDecoration( + color: Color(0x00000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Padding8_wdx9( + Constants.singleTanishkBagchi_, + Constants.raatanLmbiyan_, + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSejp88_U6iaR-vNPvZUdgj1omlqdK5M6apdBhq5g1jKCGOAbUYsg9yd3Hx6zG5SR3NcGc&usqp=CAU', + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRCD69ZCvQ8FdZG3VwTaIDVuQZ62tdd0zKujg&usqp=CAU', + ), + height: 160, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 8, 0, 0), + child: Text( + Constants.ranjha_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 0), + child: Text( + Constants.singleJasleenRoyal_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 8, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTDOjj0NZafV2BhUZOeJArqdFIM6Dn22Q6Uu2quiinylIONzg5yB7l1eDwzB9p44VtRhHM&usqp=CAU', + ), + height: 160, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 8, 0, 0), + child: Text( + Constants.shershaahOriginal_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 0), + child: Text( + Constants.ePVariousArtists_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class Discover_au68Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/empty_pin_notes_1l1v.dart b/lib/src/ui/views/empty_pin_notes_1l1v.dart new file mode 100644 index 0000000..422cea5 --- /dev/null +++ b/lib/src/ui/views/empty_pin_notes_1l1v.dart @@ -0,0 +1,118 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class EmptyPinNotes_1l1vView extends StatefulWidget { + final Object? extra; + + EmptyPinNotes_1l1vView({super.key, this.extra}); + + @override + State createState() => _EmptyPinNotes_1l1vViewState(); +} + +class _EmptyPinNotes_1l1vViewState extends State { + late EmptyPinNotes_1l1vController _view; + + @override + void initState() { + super.initState(); + _view = EmptyPinNotes_1l1vController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.pins_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffffffff), + ), + ), + actions: [ + Icon(Icons.search, color: Color(0xffffffff), size: 22), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 16, 0), + child: Icon( + Icons.dashboard, + color: Color(0xffffffff), + size: 22, + ), + ), + ], + ), + body: Align( + alignment: Alignment.center, + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.push_pin, + color: const Color(0xFF000000), + size: 100, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.pinNotes_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontFamily: GoogleFonts.getFont('Oswald').fontFamily, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 30, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class EmptyPinNotes_1l1vController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/following_s3l5.dart b/lib/src/ui/views/following_s3l5.dart new file mode 100644 index 0000000..2deae81 --- /dev/null +++ b/lib/src/ui/views/following_s3l5.dart @@ -0,0 +1,517 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Following_s3l5View extends StatefulWidget { + final Object? extra; + + Following_s3l5View({super.key, this.extra}); + + @override + State createState() => _Following_s3l5ViewState(); +} + +class _Following_s3l5ViewState extends State { + late Following_s3l5Controller _view; + + @override + void initState() { + super.initState(); + _view = Following_s3l5Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.following_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.all(16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: TextField710_3r6r(Constants.search_), + ), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Row703_gnuw( + Constants.following_, + Constants.k13Articles_, + Constants.johnHawkins_, + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRraGrytZ8u02sInXmIguSY2bdhVAYtmqJC-vJzrJBzIbJeex1dXb-a1PuIFCIL_qj7DkU&usqp=CAU', + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRWHjMzM5qzBjS64SJEIyCQkLgXODzDLznFPOt54tmyPNXP3BQ78_AN83FAlbeGujmuPCg&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.kevin_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k10Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQAxDgR_pCrTRrc1IgCv6mFaAQg8czsfkdULquUavCyXAlDqNYawOm4q3VsSuyUFqw_Ygc&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.rose_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k6Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRAL5lx462Rjn-dAsEQHumnRJATsXmXbP2mxHWzbFr_RKitmboHvkL-gnOFfOi-gbyZW60&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.renne_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k5Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRMBF7GiWBnuwHZEoUkGAktUZR91Ge2bVJ9rhYg7-YRz0M7tdM-8Os4tSZno4Jd6j5p9p8&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.doran_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k24Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSNys7iFvBBxifr5E1pgSgnlKxZ8G9HO-47sSR1oW57o1QAXA3YuXsmpVq1WZk9-HkoZls&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.marie_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k8Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class Following_s3l5Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/forgot_password_xt11.dart b/lib/src/ui/views/forgot_password_xt11.dart new file mode 100644 index 0000000..1f83acb --- /dev/null +++ b/lib/src/ui/views/forgot_password_xt11.dart @@ -0,0 +1,262 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ForgotPassword_xt11View extends StatefulWidget { + final Object? extra; + + ForgotPassword_xt11View({super.key, this.extra}); + + @override + State createState() => + _ForgotPassword_xt11ViewState(); +} + +class _ForgotPassword_xt11ViewState extends State { + late ForgotPassword_xt11Controller _view; + + @override + void initState() { + super.initState(); + _view = ForgotPassword_xt11Controller() + ..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xff3a57e8), + body: SizedBox( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: Stack( + alignment: Alignment.topLeft, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height * 0.5, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + height: 100, + width: 100, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://cdn4.iconfinder.com/data/icons/seo-and-marketing-icons-1-1/129/56-128.png', + fit: BoxFit.fill, + ), + ), + ), + Align( + alignment: Alignment.bottomCenter, + child: Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height * 0.5, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16.0), + topRight: Radius.circular(16.0), + ), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.forgotPassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.enterYourEmailForTheVerif_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff615f5f), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.email_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff595757), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff595757), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff595757), + width: 1, + ), + ), + hintText: Constants.enterText_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + suffixIcon: Icon( + Icons.mail, + color: Color(0xff212435), + size: 24, + ), + ), + ), + ), + ], + ), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(30, 30, 0, 0), + child: IconButton( + icon: Icon( + Icons.arrow_back_ios, + color: Color(0xffffffff), + size: 24, + ), + onPressed: () { + app.back(); + }, + ), + ), + Padding( + padding: EdgeInsets.all(16), + child: Align( + alignment: Alignment.bottomCenter, + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFF3A57E8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.continue_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 45, + minWidth: MediaQuery.of(context).size.width, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class ForgotPassword_xt11Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/grid_kcdz.dart b/lib/src/ui/views/grid_kcdz.dart new file mode 100644 index 0000000..f2e8e99 --- /dev/null +++ b/lib/src/ui/views/grid_kcdz.dart @@ -0,0 +1,579 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Grid_kcdzView extends StatefulWidget { + final Object? extra; + + Grid_kcdzView({super.key, this.extra}); + + @override + State createState() => _Grid_kcdzViewState(); +} + +class _Grid_kcdzViewState extends State { + late Grid_kcdzController _view; + + @override + void initState() { + super.initState(); + _view = Grid_kcdzController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: GridView( + padding: EdgeInsets.all(16), + shrinkWrap: false, + scrollDirection: Axis.vertical, + physics: ClampingScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 8, + mainAxisSpacing: 8, + childAspectRatio: 0.8, + ), + children: [ + Stack2339_cb92( + Constants.sHOPNOW_, + () { + view._click(); + }, + Constants.fLAT20OFF_, + Constants.internationalBrand_, + 'https://images.pexels.com/photos/1382731/pexels-photo-1382731.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/VH1dm4Y/excited-ginger-lady-hat-holding-straw-bag-ecstatic-long-haired-girl-summer-outfit-enjoying-good-day.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/HHkQNXK/cute-smiling-model-white-t-shirt-hat-among-orange-background-with-funny-face-231208-4900.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/59PLznV/dark-haired-woman-with-red-lipstick-smiles-leans-stand-with-clothes-holds-package-pink-background-19.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/2SmNQBk/happy-lady-stylish-skirt-boater-posing-pink-wall-197531-23653.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/Ykjp9cF/portrait-handsome-smiling-stylish-young-man-model-wearing-jeans-clothes-fashion-man-158538-5025.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + ], + ), + ), + ), + ); + } +} + +class Grid_kcdzController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/home_cigx.dart b/lib/src/ui/views/home_cigx.dart new file mode 100644 index 0000000..7e454db --- /dev/null +++ b/lib/src/ui/views/home_cigx.dart @@ -0,0 +1,576 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Home_cigxView extends StatefulWidget { + final Object? extra; + + Home_cigxView({super.key, this.extra}); + + @override + State createState() => _Home_cigxViewState(); +} + +class _Home_cigxViewState extends State { + late Home_cigxController _view; + final pageController = PageController(); + + @override + void initState() { + super.initState(); + _view = Home_cigxController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(16, 40, 16, 16), + child: Row1927_acsm( + Icons.shopping_cart, + Icons.notifications, + Icons.favorite_border, + Constants.rose_, + 'https://cdn.pixabay.com/photo/2018/01/15/07/51/woman-3083383_960_720.jpg', + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: TextField1926_332s( + Icons.photo_camera, + Constants.searchHere_, + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 100, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(8), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0xffffc6e0), + shape: BoxShape.circle, + ), + child: ImageIcon( + NetworkImage( + 'https://cdn1.iconfinder.com/data/icons/basi-icon-set-01/100/Fin_copy-37-256.png', + ), + size: 24, + color: Color(0xff731069), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.categories_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + children: [ + Padding1901_cx9n( + Constants.kurtiSuits_, + 'https://i.ibb.co/5v10g3w/young-woman-beautiful-red-dress-1303-17506.jpg', + ), + Padding1902_1msv( + Constants.westernwear_, + 'https://i.ibb.co/2SmNQBk/happy-lady-stylish-skirt-boater-posing-pink-wall-197531-23653.jpg', + ), + Padding1903_0ffz( + Constants.men_, + 'https://i.ibb.co/6mSs68n/portrait-handsome-smiling-stylish-young-man-model-dressed-blue-shirt-clothes-fashion-man-posing-1585.jpg', + ), + Padding1904_tdvf( + Constants.saree_, + 'https://images.unsplash.com/photo-1610030469983-98e550d6193c?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8c2FyZWV8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60', + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + shape: BoxShape.circle, + ), + child: Image.network( + 'https://images.unsplash.com/photo-1601121141461-9d6647bca1ed?ixid=MnwxMjA3fDB8MHxzZWFyY2h8M3x8Z29sZCUyMGpld2VsbGVyeXxlbnwwfHwwfHw%3D&ixlib=rb-1.2.1&w=1000&q=80', + fit: BoxFit.cover, + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.text_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + SizedBox( + height: 240, + width: MediaQuery.of(context).size.width, + child: Stack( + children: [ + PageView.builder( + controller: pageController, + scrollDirection: Axis.horizontal, + itemCount: 3, + itemBuilder: (context, position) { + return Align( + alignment: Alignment.topCenter, + child: Image.network( + 'https://i.ibb.co/80RV30C/flat-diwali-sale-with-candle-52683-27177.jpg', + height: 200, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ); + }, + ), + Align( + alignment: Alignment.bottomCenter, + child: Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 15), + child: SmoothPageIndicator( + controller: pageController, + count: 3, + axisDirection: Axis.horizontal, + effect: ExpandingDotsEffect( + dotColor: Color(0xff9e9e9e), + activeDotColor: Color(0xff3a57e8), + dotHeight: 10, + dotWidth: 10, + radius: 16, + spacing: 8, + expansionFactor: 3, + ), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 8, 0, 0), + child: Align( + alignment: Alignment.centerLeft, + child: Text( + Constants.offerZone_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 4, 0, 16), + child: Align( + alignment: Alignment.centerLeft, + child: Text( + Constants.bestDealsOnProducts_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff9e9e9e), + ), + ), + ), + ), + GridView( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + shrinkWrap: true, + scrollDirection: Axis.vertical, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + crossAxisSpacing: 8, + mainAxisSpacing: 8, + childAspectRatio: 1, + ), + children: [ + Stack1906_s1jy( + Constants.k50Off_, + 'https://i.ibb.co/59PLznV/dark-haired-woman-with-red-lipstick-smiles-leans-stand-with-clothes-holds-package-pink-background-19.jpg', + ), + Stack1907_xt28( + Constants.k30Off_, + 'https://i.ibb.co/2styPjJ/pretty-young-stylish-sexy-woman-pink-luxury-dress-summer-fashion-trend-chic-style-sunglasses-blue-st.jpg', + ), + Stack1908_55ms( + Constants.k10Off_, + 'https://i.ibb.co/wQH72qM/fashion-portrait-two-elegant-women-best-friends-posing-indoor-grey-wall-wearing-winter-fluffy-coat-b.jpg', + ), + Stack1909_yxtc( + Constants.k30Off_, + 'https://i.ibb.co/stCq4J3/three-young-beautiful-smiling-girls-trendy-summer-casual-jeans-clothes-sexy-carefree-women-posing-po.jpg', + ), + Stack1910_yg0l( + Constants.k30Off_, + 'https://images.unsplash.com/photo-1572804013427-4d7ca7268217?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8d29tYW4lMjBjbG90aGVzfGVufDB8fDB8fA%3D%3D&ixlib=rb-1.2.1&w=1000&q=80', + ), + Stack1911_9sq5( + Constants.k30Off_, + 'https://i.ibb.co/kXYrWvS/pleased-female-model-with-happy-face-expression-posing-winter-clothes-smiling-short-haired-woman-sca.jpg', + ), + Stack1912_btq1( + Constants.k30Off_, + 'https://i.ibb.co/2styPjJ/pretty-young-stylish-sexy-woman-pink-luxury-dress-summer-fashion-trend-chic-style-sunglasses-blue-st.jpg', + ), + Stack1913_cao7( + Constants.k30Off_, + 'https://images.pexels.com/photos/5868122/pexels-photo-5868122.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', + ), + Stack1914_hvm6( + Constants.k50Off_, + 'https://i.ibb.co/5YNNwcc/woman-with-shopping-bags-studio-yellow-background-isolated-1303-14294.jpg', + ), + ], + ), + Divider( + color: Color(0xffe3e1e1), + height: 16, + thickness: 8, + indent: 0, + endIndent: 0, + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 8, 0, 0), + child: Align( + alignment: Alignment.centerLeft, + child: Text( + Constants.contestSection_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 8, 0, 16), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 100, + decoration: BoxDecoration( + color: Color(0x00000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Container1915_m39v( + Constants.cLICKTOSPIN_, + Constants.spinWinAssuredCredits_, + Constants.spinWinAdduredCredits_, + 'https://i.ibb.co/XDbRhWd/wheel-fortune-lucky-girl-winner-casino-107791-1550.jpg', + ), + Container( + margin: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + padding: EdgeInsets.all(0), + width: 280, + height: 100, + decoration: BoxDecoration( + color: Color(0x00000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(12.0), + bottomLeft: Radius.circular(12.0), + ), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/8Nv083m/golden-wheel-fortune-luck-spin-background-1017-31404.jpg', + ), + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 4), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.spinWinAdduredCredits_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.spinWinAssuredCredits_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.cLICKTOSPIN_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 0, 8, 0), + padding: EdgeInsets.all(0), + width: 280, + height: 100, + decoration: BoxDecoration( + color: Color(0x00000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(12.0), + bottomLeft: Radius.circular(12.0), + ), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/CwxXLdv/jackpot-realistic-background-1284-25763.jpg', + ), + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 4), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.spinWinAdduredCredits_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.spinWinAssuredCredits_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.cLICKTOSPIN_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Home_cigxController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/labels_sxue.dart b/lib/src/ui/views/labels_sxue.dart new file mode 100644 index 0000000..c9d00cb --- /dev/null +++ b/lib/src/ui/views/labels_sxue.dart @@ -0,0 +1,251 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Labels_sxueView extends StatefulWidget { + final Object? extra; + + Labels_sxueView({super.key, this.extra}); + + @override + State createState() => _Labels_sxueViewState(); +} + +class _Labels_sxueViewState extends State { + late Labels_sxueController _view; + + @override + void initState() { + super.initState(); + _view = Labels_sxueController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar682_1czg( + Icons.dashboard, + Icons.search, + Constants.labels_, + ), + body: GridView( + padding: EdgeInsets.all(16), + shrinkWrap: false, + scrollDirection: Axis.vertical, + physics: ClampingScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 16, + mainAxisSpacing: 16, + childAspectRatio: 1.3, + ), + children: [ + Container676_u4q2(Constants.k1Item_, Constants.ideas_), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.uX_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffff9200), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k2Items_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff4c4c4c), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.story_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffff5600), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k1Item_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff4c4c4c), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.xD_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff169b81), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k2Items_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff4c4c4c), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.lorem_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffaf1d86), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k1Item_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff4c4c4c), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ); + } +} + +class Labels_sxueController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/list_1eal.dart b/lib/src/ui/views/list_1eal.dart new file mode 100644 index 0000000..3de38c0 --- /dev/null +++ b/lib/src/ui/views/list_1eal.dart @@ -0,0 +1,213 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class List_1ealView extends StatefulWidget { + final Object? extra; + + List_1ealView({super.key, this.extra}); + + @override + State createState() => _List_1ealViewState(); +} + +class _List_1ealViewState extends State { + late List_1ealController _view; + + @override + void initState() { + super.initState(); + _view = List_1ealController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar3210_xy2e(Icons.search, () { + app.back(); + }, Constants.gifts_), + body: ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.all(16), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Stack3205_puva( + Constants.gifts_, + Constants.creativeGiftsForCapricom_, + 'https://i.ibb.co/T41bzp3/cosmetic-product-packaging-mockup-1150-40282.jpg', + ), + Stack( + alignment: Alignment.center, + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/fqCzqgH/realistic-ad-with-product-landing-page-52683-70960.jpg', + ), + height: 180, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.center, + child: Container( + margin: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + padding: EdgeInsets.all(4), + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0xff000000), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.creativeGiftsForCapricom_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.gifts_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa3a3a3), + ), + ), + ), + ], + ), + ), + ), + ], + ), + Stack( + alignment: Alignment.center, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/4RwSHM4/realistic-ad-with-product-landing-page-52683-70867.jpg', + ), + height: 180, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.center, + child: Container( + margin: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + padding: EdgeInsets.all(4), + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0xff000000), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.creativeGiftsForCapricom_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.gifts_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa3a3a3), + ), + ), + ), + ], + ), + ), + ), + ], + ), + Stack3208_5dv2( + Constants.gifts_, + Constants.creativeGiftsForCapricom_, + 'https://i.ibb.co/j4fqbMX/skincare-brand-bottle-ad-52683-35127.jpg', + ), + ], + ), + ), + ), + ); + } +} + +class List_1ealController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/login_qayv.dart b/lib/src/ui/views/login_qayv.dart new file mode 100644 index 0000000..f144029 --- /dev/null +++ b/lib/src/ui/views/login_qayv.dart @@ -0,0 +1,319 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Login_qayvView extends StatefulWidget { + final Object? extra; + + Login_qayvView({super.key, this.extra}); + + @override + State createState() => _Login_qayvViewState(); +} + +class _Login_qayvViewState extends State { + late Login_qayvController _view; + + @override + void initState() { + super.initState(); + _view = Login_qayvController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: SizedBox( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: Stack( + alignment: Alignment.topLeft, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/kX2c8DW/low-angle-shot-mesmerizing-starry-sky-181624-27925.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Align( + alignment: Alignment.center, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://cdn0.iconfinder.com/data/icons/butterflies-2/48/74-128.png', + ), + height: 120, + width: 120, + fit: BoxFit.contain, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 70, 0, 16), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + hintText: Constants.username_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + ), + ), + ), + TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + hintText: Constants.password_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 16), + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFF3A57E8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.lOGIN_, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 50, + minWidth: MediaQuery.of(context).size.width, + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.dontHaveAnAccount_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffbab4b4), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: Text( + Constants.signUp_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 16), + child: Text( + Constants.loginWithSocialNetwork_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffbab4b4), + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://cdn2.iconfinder.com/data/icons/social-media-2285/512/1_Facebook_colored_svg_copy-128.png', + ), + height: 50, + width: 50, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://cdn3.iconfinder.com/data/icons/2018-social-media-logotypes/1000/2018_social_media_popular_app_logo_instagram-128.png', + ), + height: 50, + width: 50, + fit: BoxFit.cover, + ), + ), + + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://cdn3.iconfinder.com/data/icons/2018-social-media-logotypes/1000/2018_social_media_popular_app_logo_twitter-128.png', + ), + height: 50, + width: 50, + fit: BoxFit.cover, + ), + ], + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Login_qayvController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/membership_z9ze.dart b/lib/src/ui/views/membership_z9ze.dart new file mode 100644 index 0000000..f5481af --- /dev/null +++ b/lib/src/ui/views/membership_z9ze.dart @@ -0,0 +1,153 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Membership_z9zeView extends StatefulWidget { + final Object? extra; + + Membership_z9zeView({super.key, this.extra}); + + @override + State createState() => _Membership_z9zeViewState(); +} + +class _Membership_z9zeViewState extends State { + late Membership_z9zeController _view; + + @override + void initState() { + super.initState(); + _view = Membership_z9zeController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.membership_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.chooseYourPlan_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 30), + child: Text( + Constants.byBecomingAMenberYouCan_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xbe8a8989), + ), + ), + ), + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container121_di37( + Constants.billedEveryMonth_, + Constants.uSD999_, + Constants.monthly_, + const Color(0xFFFF5630), + ), + Container122_a8w6( + Constants.billedEvery12Month_, + Constants.uSD499month_, + Constants.yearly_, + const Color(0xFF89898968), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 0), + child: MaterialButton123_qtis( + Constants.selectPlan_, + const Color(0xFFFF5630), + () { + context.push('/aboutus'); + }, + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Membership_z9zeController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/my_account_tyvz.dart b/lib/src/ui/views/my_account_tyvz.dart new file mode 100644 index 0000000..8dfb230 --- /dev/null +++ b/lib/src/ui/views/my_account_tyvz.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class MyAccount_tyvzView extends StatefulWidget { + final Object? extra; + + MyAccount_tyvzView({super.key, this.extra}); + + @override + State createState() => _MyAccount_tyvzViewState(); +} + +class _MyAccount_tyvzViewState extends State { + late MyAccount_tyvzController _view; + + @override + void initState() { + super.initState(); + _view = MyAccount_tyvzController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar1219_t88q(Constants.myAccount_), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 30, horizontal: 16), + child: Row1218_c1cc( + Constants.basic_, + () { + view._click(); + }, + Constants.iD786534789_, + Constants.philipRamirez_, + 'https://i.ibb.co/GV44RGq/pleasant-looking-serious-man-stands-profile-has-confident-expression-wears-casual-white-t-shirt-2736.jpg', + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 30), + child: MaterialButton1217_jwby(Constants.upgradePlan_, () { + view._click(); + }), + ), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.symmetric(vertical: 30, horizontal: 16), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + ListTile1210_3rti(Constants.settings_), + Divider1211_akau(), + SwitchListTile1212_w9oz(Constants.darkMode_), + Divider1211_qqok(), + ListTile1213_y7ek(Constants.aboutUs_1), + Divider1211_quka(), + ListTile1214_lcq3(Constants.termsAndConditions_), + ], + ), + MaterialButton1215_0qfr(Constants.logOut_, () { + view._click(); + }), + ], + ), + ), + ), + ), + ); + } +} + +class MyAccount_tyvzController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/news_details_t6nw.dart b/lib/src/ui/views/news_details_t6nw.dart new file mode 100644 index 0000000..e7d8bdf --- /dev/null +++ b/lib/src/ui/views/news_details_t6nw.dart @@ -0,0 +1,121 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class NewsDetails_t6nwView extends StatefulWidget { + final Object? extra; + + NewsDetails_t6nwView({super.key, this.extra}); + + @override + State createState() => _NewsDetails_t6nwViewState(); +} + +class _NewsDetails_t6nwViewState extends State { + late NewsDetails_t6nwController _view; + + @override + void initState() { + super.initState(); + _view = NewsDetails_t6nwController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + actions: [ + Icon(Icons.more_vert, color: Color(0xff212435), size: 24), + ], + ), + body: Padding( + padding: EdgeInsets.all(16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.fASHION_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffff5630), + ), + ), + Padding1339_yprp( + Icons.bookmark_outline, + Constants.theWatchModelThatMakesYu_, + ), + ClipRRect1340_ko9q( + 'https://i.ibb.co/2SmNQBk/happy-lady-stylish-skirt-boater-posing-pink-wall-197531-23653.jpg', + ), + Padding1341_9kox( + Constants.follow_, + const Color(0xFF2E2E2E), + () { + view._click(); + }, + Constants.k12Jan2021_, + Constants.byJonesHawkins_, + 'https://i.ibb.co/xDFtpkb/businessman-character-avatar-isolated-24877-60111.jpg', + ), + Text1342_x667(Constants.loremIpsumIsSimplyDummyTe_), + ], + ), + ), + ), + ), + ), + ); + } +} + +class NewsDetails_t6nwController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/no_data_found_shk8.dart b/lib/src/ui/views/no_data_found_shk8.dart new file mode 100644 index 0000000..60fe480 --- /dev/null +++ b/lib/src/ui/views/no_data_found_shk8.dart @@ -0,0 +1,133 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class NoDataFound_shk8View extends StatefulWidget { + final Object? extra; + + NoDataFound_shk8View({super.key, this.extra}); + + @override + State createState() => _NoDataFound_shk8ViewState(); +} + +class _NoDataFound_shk8ViewState extends State { + late NoDataFound_shk8Controller _view; + + @override + void initState() { + super.initState(); + _view = NoDataFound_shk8Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + + ///***If you have exported images you must have to copy those images in assets/images directory. + children: [ + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ8Q834-7f4pEXZbLNMllf9kfmCa98XH7r3KqlWuYvzb2MxQofQ0lEZV17zyaAZSGOMzmU&usqp=CAU', + ), + height: 120, + width: 120, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.oopsYouAreLost_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 30), + child: Text( + Constants.thePageYouAreLookingForC_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xbe8a8989), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFFFF5630), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.goBack_, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 50, + minWidth: MediaQuery.of(context).size.width, + ), + ], + ), + ), + ), + ), + ); + } +} + +class NoDataFound_shk8Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/notification_setting_bycd.dart b/lib/src/ui/views/notification_setting_bycd.dart new file mode 100644 index 0000000..09f5ec4 --- /dev/null +++ b/lib/src/ui/views/notification_setting_bycd.dart @@ -0,0 +1,157 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class NotificationSetting_bycdView extends StatefulWidget { + final Object? extra; + + NotificationSetting_bycdView({super.key, this.extra}); + + @override + State createState() => + _NotificationSetting_bycdViewState(); +} + +class _NotificationSetting_bycdViewState + extends State { + late NotificationSetting_bycdController _view; + + @override + void initState() { + super.initState(); + _view = NotificationSetting_bycdController() + ..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.notificationSetting_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row1245_305i(Constants.appNotification_), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.recommendedArticle_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Checkbox( + onChanged: (value) {}, + activeColor: Color(0xffff5630), + autofocus: false, + checkColor: Color(0xffffffff), + hoverColor: Color(0x42000000), + splashRadius: 20, + value: true, + ), + ], + ), + ), + Padding1247_rcmx(Constants.promotion_), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.latestNews_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Checkbox( + onChanged: (value) {}, + activeColor: Color(0xffff5630), + autofocus: false, + checkColor: Color(0xffffffff), + hoverColor: Color(0x42000000), + splashRadius: 20, + value: true, + ), + ], + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class NotificationSetting_bycdController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/pin_note_list_qn8a.dart b/lib/src/ui/views/pin_note_list_qn8a.dart new file mode 100644 index 0000000..d74f186 --- /dev/null +++ b/lib/src/ui/views/pin_note_list_qn8a.dart @@ -0,0 +1,270 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class PinNoteList_qn8aView extends StatefulWidget { + final Object? extra; + + PinNoteList_qn8aView({super.key, this.extra}); + + @override + State createState() => _PinNoteList_qn8aViewState(); +} + +class _PinNoteList_qn8aViewState extends State { + late PinNoteList_qn8aController _view; + + @override + void initState() { + super.initState(); + _view = PinNoteList_qn8aController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar1048_e0na( + Icons.dashboard, + Icons.search, + Constants.pins_, + ), + body: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Text( + Constants.recent_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Container1042_49si( + Constants.ideas_, + Constants.k22Aug20200230Am_, + Icons.more_horiz, + Icons.push_pin, + Constants.webIdeas_, + Icons.article, + ), + Container( + margin: EdgeInsets.fromLTRB(0, 0, 0, 16), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.article, + color: Color(0xff3a57e8), + size: 50, + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + Constants + .theRoleOfCretivityInUXDe_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: + TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Icon( + Icons.push_pin, + color: Color(0xffffac00), + size: 20, + ), + ), + ], + ), + ), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 20, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + Constants.k15Sep20200230Am_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff393939), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB( + 8, + 0, + 0, + 0, + ), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: + BorderRadius.circular(4.0), + ), + child: Text( + Constants.uX_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ], + ), + ), + Container1044_awqh( + Constants.story_, + Constants.k22Mar20200230Am_, + Icons.more_horiz, + Icons.push_pin, + Constants.chap1_, + Icons.article, + ), + Container1045_jwip( + Constants.story_, + Constants.k22June20200230Am_, + Icons.more_horiz, + Icons.push_pin, + Constants.chap2_, + Icons.article, + ), + ], + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class PinNoteList_qn8aController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/profile_pzn0.dart b/lib/src/ui/views/profile_pzn0.dart new file mode 100644 index 0000000..4300bb6 --- /dev/null +++ b/lib/src/ui/views/profile_pzn0.dart @@ -0,0 +1,359 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Profile_pzn0View extends StatefulWidget { + final Object? extra; + + Profile_pzn0View({super.key, this.extra}); + + @override + State createState() => _Profile_pzn0ViewState(); +} + +class _Profile_pzn0ViewState extends State { + late Profile_pzn0Controller _view; + + @override + void initState() { + super.initState(); + _view = Profile_pzn0Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 4, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(16.0), + bottomRight: Radius.circular(16.0), + ), + ), + title: Text( + Constants.profile_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.menu, color: Color(0xff000000), size: 24), + onPressed: () { + view._click(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 16, width: 16), + Text( + Constants.editProfile_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff535252), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(0, 16, 0, 30), + padding: EdgeInsets.all(0), + width: 140, + height: 140, + decoration: BoxDecoration( + color: Color(0x1f000000), + shape: BoxShape.circle, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Container( + height: 120, + width: 120, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://i.ibb.co/xDFtpkb/businessman-character-avatar-isolated-24877-60111.jpg', + fit: BoxFit.cover, + ), + ), + ), + TextField( + controller: TextEditingController(text: Constants.anthony_), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.lastName_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff6f6d6d), + ), + hintText: "Enter Text", + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0x00ffffff), + isDense: false, + contentPadding: EdgeInsets.fromLTRB(0, 0, 0, 8), + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: TextField( + controller: TextEditingController(text: Constants.smith_), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.firstName_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff6f6d6d), + ), + hintText: "Enter Text", + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0x00ffffff), + isDense: false, + contentPadding: EdgeInsets.fromLTRB(0, 0, 0, 8), + ), + ), + ), + TextField( + controller: TextEditingController( + text: Constants.anthonysmith12_, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.username_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff6f6d6d), + ), + hintText: "Enter Text", + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0x00ffffff), + isDense: false, + contentPadding: EdgeInsets.fromLTRB(0, 0, 0, 8), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: TextField( + controller: TextEditingController( + text: Constants.anthonysmithgmailcom_, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.email_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff6f6d6d), + ), + hintText: "Enter Text", + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0x00ffffff), + isDense: false, + contentPadding: EdgeInsets.fromLTRB(0, 0, 0, 8), + ), + ), + ), + SizedBox(height: 16, width: 16), + ], + ), + ), + ), + ), + ), + ); + } +} + +class Profile_pzn0Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/register_obmz.dart b/lib/src/ui/views/register_obmz.dart new file mode 100644 index 0000000..c259d88 --- /dev/null +++ b/lib/src/ui/views/register_obmz.dart @@ -0,0 +1,181 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Register_obmzView extends StatefulWidget { + final Object? extra; + + Register_obmzView({super.key, this.extra}); + + @override + State createState() => _Register_obmzViewState(); +} + +class _Register_obmzViewState extends State { + late Register_obmzController _view; + + @override + void initState() { + super.initState(); + _view = Register_obmzController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xfff1f1f1), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height * 0.4, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(60.0), + ), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Container( + height: 70, + width: 70, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRviAGWGV45QGRAHOv3Hh35VxwyNU_Qiy8ZK_8PytS-eTrEMY4RgaNgInAQie6VgqvSA24&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.register_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 30, 16, 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + TextField561_jhkd(Icons.person, Constants.fullName_), + Padding562_b5u2(Icons.mail, Constants.email_), + Padding563_2jw4( + Icons.visibility_off, + Constants.password_, + ), + Padding564_yzg6( + Constants.register_, + const Color(0xFF3A57E8), + () { + view._click(); + }, + ), + ], + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Align( + alignment: Alignment.center, + child: Text( + Constants.alreadyHaveAnAccount_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: Text( + Constants.login_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Register_obmzController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/review_47su.dart b/lib/src/ui/views/review_47su.dart new file mode 100644 index 0000000..9b11ffe --- /dev/null +++ b/lib/src/ui/views/review_47su.dart @@ -0,0 +1,268 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Review_47suView extends StatefulWidget { + final Object? extra; + + Review_47suView({super.key, this.extra}); + + @override + State createState() => _Review_47suViewState(); +} + +class _Review_47suViewState extends State { + late Review_47suController _view; + + @override + void initState() { + super.initState(); + _view = Review_47suController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.review_, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xffffffff), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xffffffff), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: SizedBox( + width: MediaQuery.of(context).size.width, + child: Stack( + alignment: Alignment.topLeft, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i0.wp.com/cssscript.com/wp-content/uploads/2018/03/Simple-Location-Picker.png?fit=561%2C421&ssl=1', + ), + height: 250, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Container( + margin: EdgeInsets.fromLTRB(0, 200, 0, 80), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(0, 60, 0, 0), + child: Text( + Constants.bella_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 22, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 16), + child: Text( + Constants.k4971GodfreyRoad_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff878787), + ), + ), + ), + RatingBarbuilder1009_hkzs(), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.howIsYourTrip_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.yourFeedbackWillHelpImprov_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff878787), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 30, 16, 16), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 5, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + hintText: Constants.additionalComment_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffafafaf), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + ), + ), + ), + ], + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 200, 0, 0), + child: Container( + height: 80, + width: 80, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTH7wtiaB5F3B2oaF5699EJCNEtPnjD57ERWKTMjN0h-gpRxrFQ1u68HzFFT3eYJFFNLr4&usqp=CAU', + fit: BoxFit.cover, + ), + ), + ), + Padding( + padding: EdgeInsets.all(16), + child: Align( + alignment: Alignment.bottomCenter, + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFF3A57E8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.submitReview_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 50, + minWidth: MediaQuery.of(context).size.width, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Review_47suController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/setting_pano.dart b/lib/src/ui/views/setting_pano.dart new file mode 100644 index 0000000..4f3057d --- /dev/null +++ b/lib/src/ui/views/setting_pano.dart @@ -0,0 +1,411 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Setting_panoView extends StatefulWidget { + final Object? extra; + + Setting_panoView({super.key, this.extra}); + + @override + State createState() => _Setting_panoViewState(); +} + +class _Setting_panoViewState extends State { + late Setting_panoController _view; + + @override + void initState() { + super.initState(); + _view = Setting_panoController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.settings_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 30, width: 16), + Row1667_tgx9( + Constants.editPersonalDetails_, + Constants.kapilSharma_, + 'https://i.ibb.co/xDFtpkb/businessman-character-avatar-isolated-24877-60111.jpg', + ), + Padding1668_943x( + Constants.darkMode_, + Icons.wb_sunny_outlined, + ), + Text( + Constants.profile_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding1670_gouc(Constants.editProfile_, Icons.person), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Icon( + Icons.build, + color: Color(0xffffffff), + size: 24, + ), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.changePassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Icon( + Icons.arrow_forward_ios, + color: Color(0xff7b7c80), + size: 18, + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Text( + Constants.notifications_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xff81cd26), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Icon( + Icons.notifications, + color: Color(0xffffffff), + size: 24, + ), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.notifications_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Checkbox( + onChanged: (value) {}, + activeColor: Color(0xff3a57e8), + autofocus: false, + checkColor: Color(0xffffffff), + hoverColor: Color(0x42000000), + splashRadius: 20, + value: true, + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Text( + Constants.background_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xff9400ff), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Icon( + Icons.language, + color: Color(0xffffffff), + size: 24, + ), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.language_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Icon( + Icons.arrow_forward_ios, + color: Color(0xff7b7c80), + size: 18, + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xffff5d00), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Icon( + Icons.logout, + color: Color(0xffffffff), + size: 24, + ), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.logout_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Icon( + Icons.arrow_forward_ios, + color: Color(0xff7b7c80), + size: 18, + ), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class Setting_panoController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/splash_p2g8.dart b/lib/src/ui/views/splash_p2g8.dart new file mode 100644 index 0000000..f6cc306 --- /dev/null +++ b/lib/src/ui/views/splash_p2g8.dart @@ -0,0 +1,120 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Splash_p2g8View extends StatefulWidget { + final Object? extra; + + Splash_p2g8View({super.key, this.extra}); + + @override + State createState() => _Splash_p2g8ViewState(); +} + +class _Splash_p2g8ViewState extends State { + late Splash_p2g8Controller _view; + + @override + void initState() { + super.initState(); + _view = Splash_p2g8Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xff3a57e8), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Align( + alignment: Alignment.center, + child: Lottie.network( + 'https://assets6.lottiefiles.com/temp/lf20_cEITBI.json', + height: 140, + width: 140, + fit: BoxFit.cover, + repeat: true, + animate: true, + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 60), + child: Text( + Constants.weHaveSpecialFood_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 22, + color: Color(0xffffffff), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFFFFFFFF), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.next_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xff3a57e8), + height: 45, + minWidth: MediaQuery.of(context).size.width * 0.5, + ), + ], + ), + ), + ), + ), + ); + } +} + +class Splash_p2g8Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/verification_nhug.dart b/lib/src/ui/views/verification_nhug.dart new file mode 100644 index 0000000..44de34d --- /dev/null +++ b/lib/src/ui/views/verification_nhug.dart @@ -0,0 +1,180 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Verification_nhugView extends StatefulWidget { + final Object? extra; + + Verification_nhugView({super.key, this.extra}); + + @override + State createState() => _Verification_nhugViewState(); +} + +class _Verification_nhugViewState extends State { + late Verification_nhugController _view; + + @override + void initState() { + super.initState(); + _view = Verification_nhugController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.verification_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + ), + body: Align( + alignment: Alignment.center, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 30), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Image( + image: NetworkImage( + 'https://cdn4.iconfinder.com/data/icons/avatar-users/512/Avatar_Users2_15-128.png', + ), + height: 120, + width: 120, + fit: BoxFit.contain, + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 30, + horizontal: 0, + ), + child: Text( + Constants.enterTheVerificationCodeWe_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + OtpTextField1083_80av(), + Padding( + padding: EdgeInsets.symmetric( + vertical: 30, + horizontal: 0, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.ifYouDidntReceiveACode_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: Text( + Constants.resend_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFF3A57E8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.verify_, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 50, + minWidth: 150, + ), + ], + ), + ), + ), + ), + ), + ), + ); + } +} + +class Verification_nhugController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/welcome_g72w.dart b/lib/src/ui/views/welcome_g72w.dart new file mode 100644 index 0000000..5c7ece4 --- /dev/null +++ b/lib/src/ui/views/welcome_g72w.dart @@ -0,0 +1,190 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Welcome_g72wView extends StatefulWidget { + final Object? extra; + + Welcome_g72wView({super.key, this.extra}); + + @override + State createState() => _Welcome_g72wViewState(); +} + +class _Welcome_g72wViewState extends State { + late Welcome_g72wController _view; + + @override + void initState() { + super.initState(); + _view = Welcome_g72wController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xff3a57e8), + body: SizedBox( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: Stack( + alignment: Alignment.topLeft, + children: [ + Align( + alignment: Alignment.bottomCenter, + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.fultterStudio_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 24, + color: Color(0xffffffff), + ), + ), + Padding( + padding: EdgeInsets.all(16), + child: Text( + Constants.welcomeToTheFultterStudio_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + SizedBox( + height: MediaQuery.of(context).size.height * 0.6, + width: MediaQuery.of(context).size.width, + child: Stack2554_yhdm( + 'https://miro.medium.com/max/2000/1*8QgPF5tXwo5NqhvXXncwSQ.png', + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff5598ff), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.zero, + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.sIGNUP_, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 60, + minWidth: 140, + ), + ), + Expanded( + flex: 1, + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff5598ff), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.zero, + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.sIGNIN_, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 60, + minWidth: 140, + ), + ), + ], + ), + ], + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 16, 0), + child: Align( + alignment: Alignment.topRight, + child: Text( + Constants.sKIP_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Welcome_g72wController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..7cdfbc7 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,167 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.8.2" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.4" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.9" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" +sdks: + dart: ">=2.17.1 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..1ea95fe --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,39 @@ +name: food_delivery +description: A new Flutter project. +version: 1.0.0+1 +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: '>=3.2.3 <4.0.0' + +dependencies: + flutter: + sdk: flutter + cached_network_image: ^3.1.0 + cupertino_icons: ^1.0.2 + #http: ^0.13.3 + intl: ^0.19.0 + json_annotation: ^4.5.0 + provider: ^6.0.0 + shared_preferences: ^2.0.7 + uuid: ^4.2.2 + go_router: ^13.2.2 + #collection: ^1.17.0 + google_fonts: ^6.1.0 + smooth_page_indicator: ^1.2.1 + flutter_rating_bar: ^4.0.0 + lottie: ^1.1.0 + flutter_otp_text_field: ^1.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^3.0.1 + json_serializable: ^6.2.0 + build_runner: ^2.1.1 + +flutter: + uses-material-design: true + assets: + - assets/data.json + - assets/images/ \ No newline at end of file diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..b17db64 --- /dev/null +++ b/web/index.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + test_app + + + + + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..87578f3 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "test_app", + "short_name": "test_app", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +}