mirrored_repositories/awesome-flutter/examples/plugins/packages/device_info/device_info_platform_interface/lib
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:async';

import 'package:flutter/services.dart';
import 'package:meta/meta.dart';
import 'package:device_info_platform_interface/device_info_platform_interface.dart';

/// An implementation of [DeviceInfoPlatform] that uses method channels.
class MethodChannelDeviceInfo extends DeviceInfoPlatform {
  /// The method channel used to interact with the native platform.
  @visibleForTesting
  MethodChannel channel = MethodChannel('plugins.flutter.io/device_info');

  // Method channel for Android devices
  Future<AndroidDeviceInfo> androidInfo() async {
    return AndroidDeviceInfo.fromMap((await channel
            .invokeMapMethod<String, dynamic>('getAndroidDeviceInfo')) ??
        <String, dynamic>{});
  }

  // Method channel for iOS devices
  Future<IosDeviceInfo> iosInfo() async {
    return IosDeviceInfo.fromMap(
        (await channel.invokeMapMethod<String, dynamic>('getIosDeviceInfo')) ??
            <String, dynamic>{});
  }
}
