Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 0 additions & 19 deletions packages/battery_plus/battery_plus/lib/battery_plus.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,8 @@
// found in the LICENSE file.

import 'dart:async';
import 'dart:io' show Platform;

import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:battery_plus_platform_interface/battery_plus_platform_interface.dart';
import 'package:battery_plus_platform_interface/method_channel_battery_plus.dart';
import 'package:battery_plus_linux/battery_plus_linux.dart';

// Export enums from the platform_interface so plugin users can use them directly.
export 'package:battery_plus_platform_interface/battery_plus_platform_interface.dart'
Expand All @@ -31,22 +27,7 @@ class Battery {

static Battery? _singleton;

static bool _manualDartRegistrationNeeded = true;

static BatteryPlatform get _platform {
// This is to manually endorse Dart implementations until automatic
// registration of Dart plugins is implemented. For details see
// https://github.com/flutter/flutter/issues/52267.
if (_manualDartRegistrationNeeded) {
// Only do the initial registration if it hasn't already been overridden
// with a non-default instance.
if (!kIsWeb && BatteryPlatform.instance is MethodChannelBattery) {
if (Platform.isLinux) {
BatteryPlatform.instance = BatteryPlusLinux();
}
}
_manualDartRegistrationNeeded = false;
}
return BatteryPlatform.instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ typedef UPowerDeviceFactory = UPowerDevice Function();

/// The Linux implementation of BatteryPlatform.
class BatteryPlusLinux extends BatteryPlatform {
/// Register this dart class as the platform implementation for linux
static void registerWith() {
BatteryPlatform.instance = BatteryPlusLinux();
}

/// Returns the current battery level in percent.
@override
Future<int> get batteryLevel {
Expand Down
1 change: 1 addition & 0 deletions packages/battery_plus/battery_plus_linux/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ dev_dependencies:

flutter:
plugin:
implements: battery_plus
platforms:
linux:
dartPluginClass: BatteryLinux
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import 'package:dbus/src/dbus_value.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
test('registered instance', () {
BatteryPlusLinux.registerWith();
expect(BatteryPlatform.instance, isA<BatteryPlusLinux>());
});
test('battery level', () async {
final battery = BatteryPlusLinux();
battery.createDevice = () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,8 @@
// found in the LICENSE file.

import 'dart:async';
import 'dart:io' show Platform;

import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:connectivity_plus_platform_interface/connectivity_plus_platform_interface.dart';
import 'package:connectivity_plus_platform_interface/method_channel_connectivity.dart';
import 'package:connectivity_plus_linux/connectivity_plus_linux.dart';

// Export enums from the platform_interface so plugin users can use them directly.
export 'package:connectivity_plus_platform_interface/connectivity_plus_platform_interface.dart'
Expand All @@ -31,23 +27,7 @@ class Connectivity {

static Connectivity? _singleton;

static bool _manualDartRegistrationNeeded = true;

// This is to manually endorse Dart implementations until automatic
// registration of Dart plugins is implemented. For details see
// https://github.com/flutter/flutter/issues/52267.
static ConnectivityPlatform get _platform {
if (_manualDartRegistrationNeeded) {
// Only do the initial registration if it hasn't already been overridden
// with a non-default instance.
if (!kIsWeb &&
ConnectivityPlatform.instance is MethodChannelConnectivity) {
if (Platform.isLinux) {
ConnectivityPlatform.instance = ConnectivityLinux();
}
}
_manualDartRegistrationNeeded = false;
}
return ConnectivityPlatform.instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ typedef NetworkManagerClientFactory = NetworkManagerClient Function();

/// The Linux implementation of ConnectivityPlatform.
class ConnectivityLinux extends ConnectivityPlatform {
/// Register this dart class as the platform implementation for linux
static void registerWith() {
ConnectivityPlatform.instance = ConnectivityLinux();
}

/// Checks the connection status of the device.
@override
Future<ConnectivityResult> checkConnectivity() async {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ dev_dependencies:

flutter:
plugin:
implements: connectivity_plus
platforms:
linux:
dartPluginClass: ConnectivityLinux
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import 'connectivity_plus_linux_test.mocks.dart';

@GenerateMocks([NetworkManagerClient])
void main() {
test('registered instance', () {
ConnectivityLinux.registerWith();
expect(ConnectivityPlatform.instance, isA<ConnectivityLinux>());
});
test('wireless', () async {
final linux = ConnectivityLinux();
linux.createClient = () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,8 @@
// found in the LICENSE file.

import 'dart:async';
import 'dart:io' show Platform;

import 'package:flutter/foundation.dart' show kIsWeb, visibleForTesting;
import 'package:device_info_plus_platform_interface/device_info_plus_platform_interface.dart';
import 'package:device_info_plus_linux/device_info_plus_linux.dart';
import 'package:device_info_plus_windows/device_info_plus_windows.dart';
export 'package:device_info_plus_platform_interface/device_info_plus_platform_interface.dart'
show
AndroidBuildVersion,
Expand All @@ -26,33 +22,11 @@ class DeviceInfoPlugin {
/// repeatedly or in performance-sensitive blocks.
DeviceInfoPlugin();

/// Disables the platform override in order to use a manually registered
/// [DeviceInfoPlatform] for testing purposes.
/// See https://github.com/flutter/flutter/issues/52267 for more details.
@visibleForTesting
static set disableDeviceInfoPlatformOverride(bool override) {
_disablePlatformOverride = override;
}

static bool _disablePlatformOverride = false;
static DeviceInfoPlatform? __platform;

// This is to manually endorse the Linux plugin until automatic registration
// of dart plugins is implemented.
// See https://github.com/flutter/flutter/issues/52267 for more details.
static DeviceInfoPlatform get _platform {
if (__platform == null) {
if (!_disablePlatformOverride && !kIsWeb) {
if (Platform.isLinux) {
__platform = DeviceInfoLinux();
} else if (Platform.isWindows) {
__platform = DeviceInfoWindows();
}
}
__platform ??= DeviceInfoPlatform.instance;
}

return __platform!;
return DeviceInfoPlatform.instance;
}

/// This information does not change from call to call. Cache it.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ import 'package:meta/meta.dart';

/// See [DeviceInfoPlatform]
class DeviceInfoLinux extends DeviceInfoPlatform {
/// Register this dart class as the platform implementation for linux
static void registerWith() {
DeviceInfoPlatform.instance = DeviceInfoLinux();
}

LinuxDeviceInfo? _cache;
final FileSystem _fileSystem;

Expand Down
7 changes: 7 additions & 0 deletions packages/device_info_plus/device_info_plus_linux/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,10 @@ dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.4

flutter:
plugin:
implements: device_info_plus
platforms:
linux:
dartPluginClass: DeviceInfoLinux
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import 'package:device_info_plus_linux/device_info_plus_linux.dart';
import 'package:device_info_plus_platform_interface/device_info_plus_platform_interface.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:file/memory.dart';

void main() {
test('registered instance', () {
DeviceInfoLinux.registerWith();
expect(DeviceInfoPlatform.instance, isA<DeviceInfoLinux>());
});
test('os-release', () async {
final fs = MemoryFileSystem.test();
final file = fs.file('/etc/os-release')..createSync(recursive: true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ import 'package:win32/win32.dart';

/// The Windows implementation of [DeviceInfoPlatform].
class DeviceInfoWindows extends DeviceInfoPlatform {
/// Register this dart class as the platform implementation for linux
static void registerWith() {
DeviceInfoPlatform.instance = DeviceInfoWindows();
}

/// Returns a [WindowsDeviceInfo] with information about the device.
@override
Future<WindowsDeviceInfo> windowsInfo() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,10 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter

flutter:
plugin:
implements: device_info_plus
platforms:
windows:
dartPluginClass: DeviceInfoWindows
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import 'package:device_info_plus_platform_interface/device_info_plus_platform_interface.dart';
import 'package:device_info_plus_windows/src/device_info_plus_windows_real.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
test('registered instance', () {
DeviceInfoWindows.registerWith();
expect(DeviceInfoPlatform.instance, isA<DeviceInfoWindows>());
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,9 @@
// found in the LICENSE file.

import 'dart:async';
import 'dart:io' show Platform;

import 'package:flutter/services.dart';
import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:network_info_plus_platform_interface/network_info_plus_platform_interface.dart';
import 'package:network_info_plus_platform_interface/method_channel_network_info.dart';
import 'package:network_info_plus_linux/network_info_plus_linux.dart';

// Export enums from the platform_interface so plugin users can use them directly.
export 'package:network_info_plus_platform_interface/network_info_plus_platform_interface.dart'
Expand All @@ -32,22 +28,10 @@ class NetworkInfo {

static NetworkInfo? _singleton;

static bool _manualDartRegistrationNeeded = true;

// This is to manually endorse Dart implementations until automatic
// registration of Dart plugins is implemented. For details see
// https://github.com/flutter/flutter/issues/52267.
static NetworkInfoPlatform get _platform {
if (_manualDartRegistrationNeeded) {
// Only do the initial registration if it hasn't already been overridden
// with a non-default instance.
if (!kIsWeb && NetworkInfoPlatform.instance is MethodChannelNetworkInfo) {
if (Platform.isLinux) {
NetworkInfoPlatform.instance = NetworkInfoLinux();
}
}
_manualDartRegistrationNeeded = false;
}
return NetworkInfoPlatform.instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ typedef NetworkManagerClientFactory = NetworkManagerClient Function();

/// The Linux implementation of NetworkInfoPlatform.
class NetworkInfoLinux extends NetworkInfoPlatform {
/// Register this dart class as the platform implementation for linux
static void registerWith() {
NetworkInfoPlatform.instance = NetworkInfoLinux();
}

/// Obtains the wifi name (SSID) of the connected network
@override
Future<String?> getWifiName() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ dev_dependencies:

flutter:
plugin:
implements: network_info_plus
platforms:
linux:
dartPluginClass: NetworkInfoLinux
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:network_info_plus_linux/src/network_info_real.dart';
import 'package:network_info_plus_platform_interface/network_info_plus_platform_interface.dart';

void main() {
test('registered instance', () {
NetworkInfoLinux.registerWith();
expect(NetworkInfoPlatform.instance, isA<NetworkInfoLinux>());
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,9 @@
// found in the LICENSE file.

import 'dart:async';
import 'dart:io' show Platform;

import 'package:flutter/foundation.dart' show kIsWeb, visibleForTesting;
import 'package:package_info_plus_linux/package_info_plus_linux.dart';
import 'package:flutter/foundation.dart' show visibleForTesting;
import 'package:package_info_plus_platform_interface/package_info_platform_interface.dart';
import 'package:package_info_plus_windows/package_info_plus_windows.dart';

/// Application metadata. Provides application bundle information on iOS and
/// application package information on Android.
Expand All @@ -27,34 +24,6 @@ class PackageInfo {
this.buildSignature = '',
});

/// Disables the platform override in order to use a manually registered
/// [PackageInfoPlatform] for testing purposes.
/// See https://github.com/flutter/flutter/issues/52267 for more details.
@visibleForTesting
static set disablePackageInfoPlatformOverride(bool override) {
_disablePlatformOverride = override;
}

static bool _disablePlatformOverride = false;
static PackageInfoPlatform? __platform;

// This is to manually endorse the Desktop plugins until automatic
// registration of Dart plugins is implemented.
// See https://github.com/flutter/flutter/issues/52267 for more details.
static PackageInfoPlatform get _platform {
if (__platform == null) {
if (!_disablePlatformOverride && !kIsWeb) {
if (Platform.isLinux) {
__platform = PackageInfoLinux();
} else if (Platform.isWindows) {
__platform = PackageInfoWindows();
}
}
__platform ??= PackageInfoPlatform.instance;
}
return __platform!;
}

static PackageInfo? _fromPlatform;

/// Retrieves package information from the platform.
Expand All @@ -64,7 +33,7 @@ class PackageInfo {
return _fromPlatform!;
}

final platformData = await _platform.getAll();
final platformData = await PackageInfoPlatform.instance.getAll();
_fromPlatform = PackageInfo(
appName: platformData.appName,
packageName: platformData.packageName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,6 @@ void main() {
}
});

setUp(() {
PackageInfo.disablePackageInfoPlatformOverride = true;
});

tearDown(() {
log.clear();
});
Expand Down
Loading