-
Notifications
You must be signed in to change notification settings - Fork 40
/
device_info_dialog.dart
104 lines (90 loc) · 3.17 KB
/
device_info_dialog.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import 'dart:io';
import 'package:device_info/device_info.dart';
import 'package:flutter/material.dart';
import 'package:ready_to_go/src/config/flavor_config.dart';
import 'package:ready_to_go/src/utils/device_utils.dart';
import 'package:ready_to_go/src/utils/string_utils.dart';
class DeviceInfoDialog extends StatelessWidget {
DeviceInfoDialog();
@override
Widget build(BuildContext context) {
return AlertDialog(
contentPadding: EdgeInsets.only(bottom: 10.0),
title: Container(
padding: EdgeInsets.all(15.0),
color: FlavorConfig.instance.color,
child: Text(
'Device Info',
style: TextStyle(color: Colors.white),
),
),
titlePadding: EdgeInsets.all(0),
content: _getContent(),
);
}
Widget _getContent() {
if (Platform.isAndroid) {
return _androidContent();
}
if (Platform.isIOS) {
return _iOSContent();
}
return Text("You're not on Android neither iOS");
}
Widget _iOSContent() {
return FutureBuilder(
future: DeviceUtils.iosDeviceInfo(),
builder: (context, AsyncSnapshot<IosDeviceInfo> snapshot) {
if (!snapshot.hasData) return Container();
IosDeviceInfo device = snapshot.data;
return SingleChildScrollView(
child: Column(
children: <Widget>[
_buildTile('Flavor:', '${FlavorConfig.instance.name}'),
_buildTile('Build mode:', '${StringUtils.enumName(DeviceUtils.currentBuildMode().toString())}'),
_buildTile('Physical device?:', '${device.isPhysicalDevice}'),
_buildTile('Device:', '${device.name}'),
_buildTile('Model:', '${device.model}'),
_buildTile('System name:', '${device.systemName}'),
_buildTile('System version:', '${device.systemVersion}')
],
),
);
});
}
Widget _androidContent() {
return FutureBuilder(
future: DeviceUtils.androidDeviceInfo(),
builder: (context, AsyncSnapshot<AndroidDeviceInfo> snapshot) {
if (!snapshot.hasData) return Container();
AndroidDeviceInfo device = snapshot.data;
return SingleChildScrollView(
child: Column(
children: <Widget>[
_buildTile('Flavor:', '${FlavorConfig.instance.name}'),
_buildTile('Build mode:', '${StringUtils.enumName(DeviceUtils.currentBuildMode().toString())}'),
_buildTile('Physical device?:', '${device.isPhysicalDevice}'),
_buildTile('Manufacturer:', '${device.manufacturer}'),
_buildTile('Model:', '${device.model}'),
_buildTile('Android version:', '${device.version.release}'),
_buildTile('Android SDK:', '${device.version.sdkInt}')
],
),
);
});
}
Widget _buildTile(String key, String value) {
return Padding(
padding: EdgeInsets.all(5.0),
child: Row(
children: <Widget>[
Text(
key,
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(value)
],
),
);
}
}