|
@@ -22,12 +22,39 @@ class CanvasPlayerView extends StatefulWidget {
|
|
|
}
|
|
|
|
|
|
class _CanvasPlayerViewState extends State<CanvasPlayerView> {
|
|
|
- IPlayerController? _playerController;
|
|
|
- IPlayerController get playerController => _playerController!;
|
|
|
+ VidPlayerController? _playerController;
|
|
|
+ VidPlayerController get playerController => _playerController!;
|
|
|
VidDataHost? _vidDataHost;
|
|
|
VidDataHost get dataHost => _vidDataHost!;
|
|
|
bool _ifInit = false;
|
|
|
|
|
|
+ final colorFiltersMatrix = {
|
|
|
+ "原色": <double>[
|
|
|
+ 1, 0, 0, 0, 0, // red
|
|
|
+ 0, 1, 0, 0, 0, // green
|
|
|
+ 0, 0, 1, 0, 0, // blue
|
|
|
+ 0, 0, 0, 1, 0, // alpha
|
|
|
+ ],
|
|
|
+ "红色通道": <double>[
|
|
|
+ 1, 0, 0, 0, 0, // red
|
|
|
+ 0, 0, 0, 0, 0, // green
|
|
|
+ 0, 0, 0, 0, 0, // blue
|
|
|
+ 0, 0, 0, 1, 0, // alpha
|
|
|
+ ],
|
|
|
+ "绿色通道": <double>[
|
|
|
+ 0, 0, 0, 0, 0, // red
|
|
|
+ 1, 0, 0, 0, 0, // green
|
|
|
+ 0, 0, 0, 0, 0, // blue
|
|
|
+ 0, 0, 0, 1, 0, // alpha
|
|
|
+ ],
|
|
|
+ "蓝色通道": <double>[
|
|
|
+ 0, 0, 0, 0, 0, // red
|
|
|
+ 0, 0, 0, 0, 0, // green
|
|
|
+ 1, 0, 0, 0, 0, // blue
|
|
|
+ 0, 0, 0, 1, 0, // alpha
|
|
|
+ ],
|
|
|
+ };
|
|
|
+
|
|
|
/// 外部播放状态控制器
|
|
|
PlayerStateController? _playerStateController;
|
|
|
PlayerStateController get playerStateController => _playerStateController!;
|
|
@@ -104,6 +131,14 @@ class _CanvasPlayerViewState extends State<CanvasPlayerView> {
|
|
|
clickPause();
|
|
|
},
|
|
|
child: const Text('⏸ Pause')),
|
|
|
+ ...colorFiltersMatrix.keys.map((key) {
|
|
|
+ return ElevatedButton(
|
|
|
+ onPressed: () {
|
|
|
+ playerController.setFilterMatrix(colorFiltersMatrix[key]!);
|
|
|
+ },
|
|
|
+ child: Text(key),
|
|
|
+ );
|
|
|
+ }).toList(),
|
|
|
],
|
|
|
),
|
|
|
],
|