Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d7bcc9935 |
No files matched your search
@@ -12,7 +12,7 @@ part 'settings_state.dart';
|
||||
|
||||
class SettingsBloc extends Bloc<SettingsEvent, SettingsState> {
|
||||
final SettingsRepository _repository;
|
||||
StreamSubscription<String>? _versionSubscription;
|
||||
StreamSubscription<Map<String, dynamic>>? _versionSubscription;
|
||||
|
||||
SettingsBloc(this._repository) : super(SettingsInitialState.createFromRepository(_repository)) {
|
||||
_onInitialize();
|
||||
@@ -49,7 +49,9 @@ class SettingsBloc extends Bloc<SettingsEvent, SettingsState> {
|
||||
final settingsState = state;
|
||||
if (settingsState is! SettingsInitialState) { return; }
|
||||
|
||||
emit(settingsState.copy(playerVersion: event.version));
|
||||
final version = event.version['version'] as String;
|
||||
final build = event.version['build'] as String;
|
||||
emit(settingsState.copy(playerVersion: version, playerBuild: build));
|
||||
}
|
||||
|
||||
_onDismissEvent(DismissEvent event, Emitter<SettingsState> emit) {
|
||||
|
||||
@@ -8,7 +8,7 @@ class DismissEvent extends SettingsEvent {}
|
||||
class CrashEvent extends SettingsEvent {}
|
||||
|
||||
class VersionReceivedEvent extends SettingsEvent {
|
||||
final String version;
|
||||
final Map<String, dynamic> version;
|
||||
VersionReceivedEvent(this.version);
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ class SettingsDismiss extends SettingsState {}
|
||||
@immutable
|
||||
class SettingsInitialState extends SettingsState {
|
||||
final String playerVersion;
|
||||
final String playerBuild;
|
||||
|
||||
final bool isSkinByDefault;
|
||||
|
||||
@@ -81,6 +82,7 @@ class SettingsInitialState extends SettingsState {
|
||||
|
||||
SettingsInitialState({
|
||||
required this.playerVersion,
|
||||
required this.playerBuild,
|
||||
required this.isSkinByDefault,
|
||||
required this.fullscreenSettings,
|
||||
required this.isPipAvailable,
|
||||
@@ -103,6 +105,7 @@ class SettingsInitialState extends SettingsState {
|
||||
|
||||
SettingsInitialState copy({
|
||||
String? playerVersion,
|
||||
String? playerBuild,
|
||||
|
||||
bool? isSkinByDefault,
|
||||
|
||||
@@ -130,6 +133,7 @@ class SettingsInitialState extends SettingsState {
|
||||
}) {
|
||||
return SettingsInitialState(
|
||||
playerVersion: playerVersion ?? this.playerVersion,
|
||||
playerBuild: playerBuild ?? this.playerBuild,
|
||||
isSkinByDefault: isSkinByDefault ?? this.isSkinByDefault,
|
||||
fullscreenSettings: fullscreenSettings ?? this.fullscreenSettings,
|
||||
isPipAvailable: isPipAvailable ?? this.isPipAvailable,
|
||||
@@ -154,6 +158,7 @@ class SettingsInitialState extends SettingsState {
|
||||
factory SettingsInitialState.createFromRepository(SettingsRepository repository) {
|
||||
return SettingsInitialState(
|
||||
playerVersion: "",
|
||||
playerBuild: "",
|
||||
isSkinByDefault: repository.isSkinByDefault,
|
||||
fullscreenSettings: SettingsMapper.fullscreenSetting(repository.fullscreenSettings),
|
||||
isPipAvailable: repository.isPipAvailable,
|
||||
|
||||
@@ -172,11 +172,11 @@ class SettingsView extends StatelessWidget {
|
||||
fontWeight: FontWeight.w400);
|
||||
|
||||
if (packageInfo.hasData) {
|
||||
var versions = [Text('ВЕРСИЯ ПРИЛОЖЕНИЯ ${packageInfo.requireData.version}', style: textStyle)];
|
||||
var versions = [Text('ВЕРСИЯ ПРИЛОЖЕНИЯ ${packageInfo.requireData.version} (${packageInfo.requireData.buildNumber})', style: textStyle)];
|
||||
|
||||
final settingsState = state;
|
||||
if (settingsState is! SettingsInitialState) { return Column(children: versions); }
|
||||
versions.add(Text('ВЕРСИЯ NUT.PLAYER ${settingsState.playerVersion}', style: textStyle));
|
||||
versions.add(Text('ВЕРСИЯ NUT.PLAYER ${settingsState.playerVersion} (${settingsState.playerBuild})', style: textStyle));
|
||||
return Column(children: versions);
|
||||
} else if (packageInfo.hasError) {
|
||||
return Text(packageInfo.error.toString(), style: textStyle);
|
||||
|
||||
@@ -3,9 +3,9 @@ import 'package:flutter/services.dart';
|
||||
|
||||
class PlayerVersionObserver {
|
||||
final MethodChannel _pluginChannel = const MethodChannel('tech.nut/plugin');
|
||||
final _versionStreamController = StreamController<String>();
|
||||
final _versionStreamController = StreamController<Map<String, dynamic>>();
|
||||
|
||||
Stream<String> get versionStream => _versionStreamController.stream.asBroadcastStream();
|
||||
Stream<Map<String, dynamic>> get versionStream => _versionStreamController.stream.asBroadcastStream();
|
||||
|
||||
PlayerVersionObserver() {
|
||||
_pluginChannel.setMethodCallHandler(_pluginVersionHandler);
|
||||
@@ -16,8 +16,10 @@ class PlayerVersionObserver {
|
||||
switch (call.method) {
|
||||
case 'pluginVersion':
|
||||
final version = call.arguments['version'];
|
||||
if (version != null) {
|
||||
_versionStreamController.add(version);
|
||||
final build = call.arguments['build'];
|
||||
if (version != null && build != null) {
|
||||
final dict = {'version': version, 'build': build};
|
||||
_versionStreamController.add(dict);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -63,7 +63,7 @@ public class NutPlayerIosPlugin: NSObject, FlutterPlugin, NutPlayerViewFactoryDe
|
||||
|
||||
switch call.method {
|
||||
case "getPlayerVersion":
|
||||
self.playerCall(for: Int64(), method: "pluginVersion", arguments: ["version": NutPlayer.version ?? ""])
|
||||
self.playerSendVersion()
|
||||
case "pluginInitialize":
|
||||
self.pluginInitialize(arguments, result: result)
|
||||
case "pluginDispose":
|
||||
@@ -117,6 +117,13 @@ public class NutPlayerIosPlugin: NSObject, FlutterPlugin, NutPlayerViewFactoryDe
|
||||
return record.platform.parameters
|
||||
}
|
||||
|
||||
func playerSendVersion() {
|
||||
self.pluginChannel.invokeMethod("pluginVersion", arguments: [
|
||||
"version": NutPlayer.version.version,
|
||||
"build": NutPlayer.version.build
|
||||
])
|
||||
}
|
||||
|
||||
func playerCall(for playerId: Int64, method: String, arguments: Parameters?) {
|
||||
|
||||
var arguments = arguments ?? [String: Any]()
|
||||
|
||||
Reference in new issue
Block a user