Author SHA1 Message Date
Elena Nazarova 8d7bcc9935 PSDK-1181 - версия сборки 2024-01-10 18:30:50 +03:00
6 changed files with 26 additions and 10 deletions

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]()