merge: 同步 main 的作者标识提交到 develop

main 的 eaf8fb4 机械性地给全仓加了 // Author 头,develop 侧包名已改 fruitshorts、
并删除了 demo_media/home_feed_category/home_feed_sections 三个文件,故按 develop 口径解决冲突:
保留 fruitshorts 包名与删除结果,补回 Author 头。
This commit is contained in:
jianghaifeng committed 2026-10-17 13:48:31 +08:00
commit 00280ca0da
65 files changed
+129

No files matched your search

+2
View File
@@ -1,3 +1,5 @@
# Author: fruit.com.cn
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
plugins {
id("com.android.application")
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
@@ -1,3 +1,5 @@
<!-- Author: fruit.com.cn -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
+2
View File
@@ -1,3 +1,5 @@
<!-- Author: fruit.com.cn -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET"/>
<application
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
package com.stormg.lumadrama
import android.content.Intent
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Author: fruit.com.cn -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/splash_background" />
<item>
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Author: fruit.com.cn -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/splash_background" />
<item>
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Author: fruit.com.cn -->
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground>
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Author: fruit.com.cn -->
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@drawable/launch_background</item>
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Author: fruit.com.cn -->
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Author: fruit.com.cn -->
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">@drawable/launch_background</item>
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Author: fruit.com.cn -->
<resources>
<color name="splash_background">#FF000000</color>
<color name="ic_launcher_background">#D74A7D</color>
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Author: fruit.com.cn -->
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
@@ -1,3 +1,5 @@
<!-- Author: fruit.com.cn -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
allprojects {
repositories {
google()
+2
View File
@@ -1,3 +1,5 @@
# Author: fruit.com.cn
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
# This newDsl flag was added by the Flutter template
+2
View File
@@ -1,3 +1,5 @@
# Author: fruit.com.cn
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
pluginManagement {
val flutterSdkPath =
run {
+2
View File
@@ -1,3 +1,5 @@
# Author: fruit.com.cn
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/material.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'json_numbers.dart';
/// 短剧与剧集,字段与后端 `/app/**` 的下发结构对应。
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
class EngagementSnapshot {
const EngagementSnapshot({
this.savedDramaIds = const {},
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
abstract interface class PlayerPort {
Future<void> initialize();
Future<void> play();
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import '../models/drama.dart';
import '../models/home_feed.dart';
import '../remote/catalog_api.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/foundation.dart';
import '../models/drama.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/foundation.dart';
import '../models/engagement_snapshot.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/services.dart';
class PlatformShareService {
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import '../models/drama.dart';
/// A player session has one navigation meaning: browse dramas or browse episodes.
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/foundation.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:video_player/video_player.dart';
import '../../config/app_config.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import '../../l10n/app_localizations.dart';
import '../data/models/drama.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/foundation.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'app.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import '../../core/data/models/drama.dart';
import '../../core/data/repositories/watch_history_repository.dart';
import 'discover_logic.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import '../../core/data/models/drama.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import '../../core/data/models/drama.dart';
import '../../core/data/repositories/playback_repository.dart';
import '../../core/data/repositories/watch_history_repository.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/material.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import '../../core/data/models/drama.dart';
import 'home_logic.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import '../../core/data/models/drama.dart';
import '../../core/data/repositories/watch_history_repository.dart';
import 'mine_logic.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/material.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import '../../core/data/repositories/watch_history_repository.dart';
import '../../core/data/repositories/playback_repository.dart';
import '../../core/data/services/android_picture_in_picture.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/material.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/material.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/foundation.dart';
+2
View File
@@ -1,3 +1,5 @@
# Author: fruit.com.cn
name: fruitshorts
description: "FruitShorts short-drama playback app (Indonesia first)."
# The following line prevents the package from being accidentally published to
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter_test/flutter_test.dart';
import 'package:fruitshorts/core/data/models/drama.dart';
import 'package:fruitshorts/core/data/models/home_feed.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter_test/flutter_test.dart';
import 'package:fruitshorts/core/data/services/engagement_controller.dart';
import 'package:fruitshorts/core/data/repositories/engagement_repository.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter_test/flutter_test.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter_test/flutter_test.dart';
import 'package:fruitshorts/core/data/models/drama.dart';
import 'package:fruitshorts/core/data/services/playback_queue.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter_test/flutter_test.dart';
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:fruitshorts/pages/player/widgets/seek_progress_bar.dart';
+1
View File
@@ -1,3 +1,4 @@
// Author: fruit.com.cn
import 'package:fruitshorts/core/data/models/drama.dart';
import 'package:fruitshorts/core/data/models/player_port.dart';
+2
View File
@@ -1,3 +1,5 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';