reason

clear

1 +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
1 #include "Generated.xcconfig" 2 #include "Generated.xcconfig"
......
1 +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
1 #include "Generated.xcconfig" 2 #include "Generated.xcconfig"
......
1 +# Uncomment this line to define a global platform for your project
2 +# platform :ios, '9.0'
3 +
4 +# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 +ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 +
7 +project 'Runner', {
8 + 'Debug' => :debug,
9 + 'Profile' => :release,
10 + 'Release' => :release,
11 +}
12 +
13 +def flutter_root
14 + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 + unless File.exist?(generated_xcode_build_settings_path)
16 + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 + end
18 +
19 + File.foreach(generated_xcode_build_settings_path) do |line|
20 + matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 + return matches[1].strip if matches
22 + end
23 + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 +end
25 +
26 +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 +
28 +flutter_ios_podfile_setup
29 +
30 +target 'Runner' do
31 + use_frameworks!
32 + use_modular_headers!
33 +
34 + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 +end
36 +
37 +post_install do |installer|
38 + installer.pods_project.targets.each do |target|
39 + flutter_additional_ios_build_settings(target)
40 + end
41 +end
1 import 'dart:async'; 1 import 'dart:async';
2 2
3 -import 'package:flutter/foundation.dart';
4 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
5 import 'package:flutter/services.dart'; 4 import 'package:flutter/services.dart';
6 import 'package:one_poem/res/resources.dart'; 5 import 'package:one_poem/res/resources.dart';
......
...@@ -59,11 +59,7 @@ Future<void> main() async { ...@@ -59,11 +59,7 @@ Future<void> main() async {
59 SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, 59 SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,
60 overlays: [SystemUiOverlay.bottom]); 60 overlays: [SystemUiOverlay.bottom]);
61 // TODO(weilu): 启动体验不佳。状态栏、导航栏在冷启动开始的一瞬间为黑色,且无法通过隐藏、修改颜色等方式进行处理。。。 61 // TODO(weilu): 启动体验不佳。状态栏、导航栏在冷启动开始的一瞬间为黑色,且无法通过隐藏、修改颜色等方式进行处理。。。
62 - // 相关问题跟踪:https://github.com/flutter/flutter/issues/73351 62 + // 相关问题跟踪:https://github.com/flukey: key) {
63 -}
64 -
65 -class MyApp extends StatelessWidget {
66 - MyApp({Key? key, this.home, this.theme}) : super(key: key) {
67 Log.init(); 63 Log.init();
68 initDio(); 64 initDio();
69 Routes.initRoutes(); 65 Routes.initRoutes();
......
1 import 'dart:async'; 1 import 'dart:async';
2 2
3 +import 'package:flutter/foundation.dart';
3 import 'package:flutter/material.dart'; 4 import 'package:flutter/material.dart';
4 import 'package:one_poem/tiktok/mock/video.dart'; 5 import 'package:one_poem/tiktok/mock/video.dart';
5 import 'package:video_player/video_player.dart'; 6 import 'package:video_player/video_player.dart';
...@@ -44,25 +45,33 @@ class TikTokVideoListController extends ChangeNotifier { ...@@ -44,25 +45,33 @@ class TikTokVideoListController extends ChangeNotifier {
44 // playerOfIndex(oldIndex)?.controller.addListener(_didUpdateValue); 45 // playerOfIndex(oldIndex)?.controller.addListener(_didUpdateValue);
45 // playerOfIndex(oldIndex)?.showPauseIcon.addListener(_didUpdateValue); 46 // playerOfIndex(oldIndex)?.showPauseIcon.addListener(_didUpdateValue);
46 playerOfIndex(oldIndex)?.pause(); 47 playerOfIndex(oldIndex)?.pause();
47 - print('暂停$oldIndex'); 48 + if (kDebugMode) {
49 + print('暂停$oldIndex');
50 + }
48 } 51 }
49 // 开始播放当前的视频 52 // 开始播放当前的视频
50 playerOfIndex(newIndex)?.controller.addListener(_didUpdateValue); 53 playerOfIndex(newIndex)?.controller.addListener(_didUpdateValue);
51 playerOfIndex(newIndex)?.showPauseIcon.addListener(_didUpdateValue); 54 playerOfIndex(newIndex)?.showPauseIcon.addListener(_didUpdateValue);
52 playerOfIndex(newIndex)?.play(); 55 playerOfIndex(newIndex)?.play();
53 - print('播放$newIndex'); 56 + if (kDebugMode) {
57 + print('播放$newIndex');
58 + }
54 // 处理预加载/释放内存 59 // 处理预加载/释放内存
55 for (var i = 0; i < playerList.length; i++) { 60 for (var i = 0; i < playerList.length; i++) {
56 // 需要释放[disposeCount]之前的视频 61 // 需要释放[disposeCount]之前的视频
57 if (i < newIndex - disposeCount || i > newIndex + disposeCount) { 62 if (i < newIndex - disposeCount || i > newIndex + disposeCount) {
58 - print('释放$i'); 63 + if (kDebugMode) {
64 + print('释放$i');
65 + }
59 playerOfIndex(i)?.controller.removeListener(_didUpdateValue); 66 playerOfIndex(i)?.controller.removeListener(_didUpdateValue);
60 playerOfIndex(i)?.showPauseIcon.removeListener(_didUpdateValue); 67 playerOfIndex(i)?.showPauseIcon.removeListener(_didUpdateValue);
61 playerOfIndex(i)?.dispose(); 68 playerOfIndex(i)?.dispose();
62 } else { 69 } else {
63 // 需要预加载 70 // 需要预加载
64 if (i > newIndex && i < newIndex + preloadCount) { 71 if (i > newIndex && i < newIndex + preloadCount) {
65 - print('预加载$i'); 72 + if (kDebugMode) {
73 + print('预加载$i');
74 + }
66 playerOfIndex(i)?.init(); 75 playerOfIndex(i)?.init();
67 } 76 }
68 } 77 }
...@@ -124,6 +133,7 @@ class TikTokVideoListController extends ChangeNotifier { ...@@ -124,6 +133,7 @@ class TikTokVideoListController extends ChangeNotifier {
124 VPVideoController get currentPlayer => playerList[index.value]; 133 VPVideoController get currentPlayer => playerList[index.value];
125 134
126 /// 销毁全部 135 /// 销毁全部
136 + @override
127 void dispose() { 137 void dispose() {
128 // 销毁全部 138 // 销毁全部
129 for (var player in playerList) { 139 for (var player in playerList) {
...@@ -156,12 +166,12 @@ abstract class TikTokVideoController<T> { ...@@ -156,12 +166,12 @@ abstract class TikTokVideoController<T> {
156 Future<void> play(); 166 Future<void> play();
157 167
158 /// 暂停 168 /// 暂停
159 - Future<void> pause({bool showPauseIcon: false}); 169 + Future<void> pause({bool showPauseIcon = false});
160 } 170 }
161 171
162 class VPVideoController extends TikTokVideoController<VideoPlayerController> { 172 class VPVideoController extends TikTokVideoController<VideoPlayerController> {
163 VideoPlayerController? _controller; 173 VideoPlayerController? _controller;
164 - ValueNotifier<bool> _showPauseIcon = ValueNotifier<bool>(false); 174 + final ValueNotifier<bool> _showPauseIcon = ValueNotifier<bool>(false);
165 175
166 final UserVideo? videoInfo; 176 final UserVideo? videoInfo;
167 177
...@@ -171,19 +181,17 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> { ...@@ -171,19 +181,17 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> {
171 this.videoInfo, 181 this.videoInfo,
172 required ControllerBuilder<VideoPlayerController> builder, 182 required ControllerBuilder<VideoPlayerController> builder,
173 ControllerSetter<VideoPlayerController>? afterInit, 183 ControllerSetter<VideoPlayerController>? afterInit,
174 - }) : this._builder = builder, 184 + }) : _builder = builder,
175 - this._afterInit = afterInit; 185 + _afterInit = afterInit;
176 186
177 @override 187 @override
178 VideoPlayerController get controller { 188 VideoPlayerController get controller {
179 - if (_controller == null) { 189 + _controller ??= _builder.call();
180 - _controller = _builder.call();
181 - }
182 return _controller!; 190 return _controller!;
183 } 191 }
184 192
185 /// 阻止在init的时候dispose,或者在dispose前init 193 /// 阻止在init的时候dispose,或者在dispose前init
186 - List<Future> _actLocks = []; 194 + final List<Future> _actLocks = [];
187 195
188 bool get isDispose => _disposeLock != null; 196 bool get isDispose => _disposeLock != null;
189 bool get prepared => _prepared; 197 bool get prepared => _prepared;
...@@ -199,7 +207,7 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> { ...@@ -199,7 +207,7 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> {
199 var completer = Completer<void>(); 207 var completer = Completer<void>();
200 _actLocks.add(completer.future); 208 _actLocks.add(completer.future);
201 _prepared = false; 209 _prepared = false;
202 - await this.controller.dispose(); 210 + await controller.dispose();
203 _controller = null; 211 _controller = null;
204 _disposeLock = Completer<void>(); 212 _disposeLock = Completer<void>();
205 completer.complete(); 213 completer.complete();
...@@ -214,10 +222,10 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> { ...@@ -214,10 +222,10 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> {
214 _actLocks.clear(); 222 _actLocks.clear();
215 var completer = Completer<void>(); 223 var completer = Completer<void>();
216 _actLocks.add(completer.future); 224 _actLocks.add(completer.future);
217 - await this.controller.initialize(); 225 + await controller.initialize();
218 - await this.controller.setLooping(true); 226 + await controller.setLooping(true);
219 - afterInit ??= this._afterInit; 227 + afterInit ??= _afterInit;
220 - await afterInit?.call(this.controller); 228 + await afterInit?.call(controller);
221 _prepared = true; 229 _prepared = true;
222 completer.complete(); 230 completer.complete();
223 if (_disposeLock != null) { 231 if (_disposeLock != null) {
...@@ -227,7 +235,7 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> { ...@@ -227,7 +235,7 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> {
227 } 235 }
228 236
229 @override 237 @override
230 - Future<void> pause({bool showPauseIcon: false}) async { 238 + Future<void> pause({bool showPauseIcon = false}) async {
231 await Future.wait(_actLocks); 239 await Future.wait(_actLocks);
232 _actLocks.clear(); 240 _actLocks.clear();
233 await init(); 241 await init();
...@@ -235,7 +243,7 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> { ...@@ -235,7 +243,7 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> {
235 if (_disposeLock != null) { 243 if (_disposeLock != null) {
236 await _disposeLock?.future; 244 await _disposeLock?.future;
237 } 245 }
238 - await this.controller.pause(); 246 + await controller.pause();
239 _showPauseIcon.value = true; 247 _showPauseIcon.value = true;
240 } 248 }
241 249
...@@ -248,7 +256,7 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> { ...@@ -248,7 +256,7 @@ class VPVideoController extends TikTokVideoController<VideoPlayerController> {
248 if (_disposeLock != null) { 256 if (_disposeLock != null) {
249 await _disposeLock?.future; 257 await _disposeLock?.future;
250 } 258 }
251 - await this.controller.play(); 259 + await controller.play();
252 _showPauseIcon.value = false; 260 _showPauseIcon.value = false;
253 } 261 }
254 262
......
This diff is collapsed. Click to expand it.