fix: app id修改,视频详情加可滑动

This commit is contained in:
csw 2026-07-01 20:00:32 +08:00
parent fc445e7c80
commit 27529578ce
6 changed files with 28 additions and 10 deletions

View File

@ -21,7 +21,7 @@ android {
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // 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. // You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config. // For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion minSdk = flutter.minSdkVersion

View File

@ -482,7 +482,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood; PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -499,7 +499,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@ -517,7 +517,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@ -533,7 +533,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@ -666,7 +666,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood; PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@ -691,7 +691,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.skywood; PRODUCT_BUNDLE_IDENTIFIER = com.glimzo.dorixa.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;

View File

@ -4,9 +4,10 @@ final class ApiConst {
static const appName = 'Glimzo'; static const appName = 'Glimzo';
static const int pageSize = 12; static const int pageSize = 12;
// https://api-glimzodf.glimzodf.com/glimzodf // 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"; static String webIndex = "https://$webPrefix";

View File

@ -54,6 +54,7 @@ class _MainRootState extends State<HomePage> {
for (SkywoodHome element in homeData) { for (SkywoodHome element in homeData) {
print('lele: ${element.moduleKey} : ${element.dataList.length}'); print('lele: ${element.moduleKey} : ${element.dataList.length}');
print('url: ${element.dataList.first.imageUrl}');
} }

View File

@ -20,6 +20,8 @@ class DramaDetailPage extends StatefulWidget {
} }
class _DramaDetailPageState extends State<DramaDetailPage> { class _DramaDetailPageState extends State<DramaDetailPage> {
static const int _preloadCount = 1;
SkywoodDetail? _detailBean; SkywoodDetail? _detailBean;
SkywoodEpisode? _selectedEpisode; SkywoodEpisode? _selectedEpisode;
final PageController _pageController = PageController(); final PageController _pageController = PageController();
@ -195,12 +197,17 @@ class _DramaDetailPageState extends State<DramaDetailPage> {
return PageView.builder( return PageView.builder(
controller: _pageController, controller: _pageController,
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
allowImplicitScrolling: true,
onPageChanged: _onPageChanged, onPageChanged: _onPageChanged,
itemCount: episodes.length, itemCount: episodes.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
final episode = episodes[index]; final episode = episodes[index];
final isCurrent = index == _currentPageIndex; final isCurrent = index == _currentPageIndex;
if (!_shouldBuildPlayer(index)) {
return const ColoredBox(color: Colors.black);
}
return SkyPlayerView( return SkyPlayerView(
key: ValueKey( key: ValueKey(
'${episode.shortPlayVideoId}-$isCurrent-${detail.videoInfo?.shortPlayVideoId}', '${episode.shortPlayVideoId}-$isCurrent-${detail.videoInfo?.shortPlayVideoId}',
@ -215,6 +222,10 @@ class _DramaDetailPageState extends State<DramaDetailPage> {
); );
} }
bool _shouldBuildPlayer(int index) {
return (index - _currentPageIndex).abs() <= _preloadCount;
}
Widget _headerWidget() { Widget _headerWidget() {
return Container( return Container(
height: 40, height: 40,

View File

@ -188,7 +188,12 @@ class HelpImg {
// } // }
return FadeInImage.assetNetwork( return FadeInImage.assetNetwork(
placeholder: isWidth==true ? ConstImg.spaceImgW : ConstImg.spaceImgH, image: path, 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( return Image.network(