diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index c7469c5..1076f1e 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -21,7 +21,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "com.example.skywood" + applicationId = "com.glimzo.havelo.app" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index e808b86..e45dd1b 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -482,7 +482,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood; + PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -499,7 +499,7 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -517,7 +517,7 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; @@ -533,7 +533,7 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; @@ -666,7 +666,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood; + PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -691,7 +691,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood; + PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/lib/global/request/api_const.dart b/lib/global/request/api_const.dart index 41b0752..bc3c4c1 100644 --- a/lib/global/request/api_const.dart +++ b/lib/global/request/api_const.dart @@ -4,9 +4,10 @@ final class ApiConst { static const appName = 'Glimzo'; static const int pageSize = 12; // https://api-glimzodf.glimzodf.com/glimzodf - static const String apiLink = 'https://api-quickeltv.quickeltv.com/quickeltv'; + static const String apiLink = 'https://api-glimzodf.glimzodf.com/glimzodf'; - static String webPrefix = "quickeltv.com"; + // https://glimzodf.com + static String webPrefix = "glimzodf.com"; static String webIndex = "https://$webPrefix"; diff --git a/lib/pages/home/home_page.dart b/lib/pages/home/home_page.dart index 76ccd2a..74c13d0 100644 --- a/lib/pages/home/home_page.dart +++ b/lib/pages/home/home_page.dart @@ -54,6 +54,7 @@ class _MainRootState extends State { for (SkywoodHome element in homeData) { print('lele: ${element.moduleKey} : ${element.dataList.length}'); + print('url: ${element.dataList.first.imageUrl}'); } diff --git a/lib/pages/home/players/page/drama_detail_page.dart b/lib/pages/home/players/page/drama_detail_page.dart index 49fdcd2..d5b183e 100644 --- a/lib/pages/home/players/page/drama_detail_page.dart +++ b/lib/pages/home/players/page/drama_detail_page.dart @@ -20,6 +20,8 @@ class DramaDetailPage extends StatefulWidget { } class _DramaDetailPageState extends State { + static const int _preloadCount = 1; + SkywoodDetail? _detailBean; SkywoodEpisode? _selectedEpisode; final PageController _pageController = PageController(); @@ -195,12 +197,17 @@ class _DramaDetailPageState extends State { return PageView.builder( controller: _pageController, scrollDirection: Axis.vertical, + allowImplicitScrolling: true, onPageChanged: _onPageChanged, itemCount: episodes.length, itemBuilder: (context, index) { final episode = episodes[index]; final isCurrent = index == _currentPageIndex; + if (!_shouldBuildPlayer(index)) { + return const ColoredBox(color: Colors.black); + } + return SkyPlayerView( key: ValueKey( '${episode.shortPlayVideoId}-$isCurrent-${detail.videoInfo?.shortPlayVideoId}', @@ -215,6 +222,10 @@ class _DramaDetailPageState extends State { ); } + bool _shouldBuildPlayer(int index) { + return (index - _currentPageIndex).abs() <= _preloadCount; + } + Widget _headerWidget() { return Container( height: 40, diff --git a/lib/utils/tools/help_img.dart b/lib/utils/tools/help_img.dart index 9b66fe5..155c436 100644 --- a/lib/utils/tools/help_img.dart +++ b/lib/utils/tools/help_img.dart @@ -188,7 +188,12 @@ class HelpImg { // } return FadeInImage.assetNetwork( placeholder: isWidth==true ? ConstImg.spaceImgW : ConstImg.spaceImgH, image: path, - width: width, height: height, fit: BoxFit.cover + width: width, height: height, fit: BoxFit.cover, + imageErrorBuilder: (context, error, stackTrace) { + return HelpImg.asset(isWidth==true ? ConstImg.spaceImgW : ConstImg.spaceImgH, fit: BoxFit.fill, + width: width, height: height + ); + }, ); return Image.network(