Skip to content
This repository was archived by the owner on Mar 24, 2025. It is now read-only.
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
24 changes: 12 additions & 12 deletions packages/phone_log/example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ class MyApp extends StatefulWidget {

class _MyAppState extends State<MyApp> {
Iterable<CallRecord> _callRecords;
var phoneLog = new PhoneLog();
final PhoneLog phoneLog = new PhoneLog();

Future<Null> fetchCallLogs() async {
var callLogs = await phoneLog.getPhoneLogs(
Future<void> fetchCallLogs() async {
final Iterable<CallRecord> callLogs = await phoneLog.getPhoneLogs(
// startDate: 20180605, duration: 15 seconds
startDate: new Int64(1525590000000),
duration: new Int64(13));
Expand All @@ -26,37 +26,37 @@ class _MyAppState extends State<MyApp> {
}

void requestPermission() async {
bool res = await phoneLog.requestPermission();
final bool res = await phoneLog.requestPermission();
print("permission request result is: " + res.toString());
}

void checkPermission() async {
PermissionStatus res = await phoneLog.checkPermission();
final PermissionStatus res = await phoneLog.checkPermission();
print("permission is: " + res.toString());
}

@override
Widget build(BuildContext context) {
var children = <Widget>[
final List<Widget> children = <Widget>[
new Padding(
padding: const EdgeInsets.all(8.0),
child: new RaisedButton(
onPressed: checkPermission, child: new Text("Check permission")),
onPressed: checkPermission, child: const Text("Check permission")),
),
new Padding(
padding: const EdgeInsets.all(8.0),
child: new RaisedButton(
onPressed: requestPermission,
child: new Text("Request permission")),
child: const Text("Request permission")),
),
new Padding(
padding: const EdgeInsets.all(8.0),
child: new RaisedButton(
onPressed: fetchCallLogs, child: new Text("Fetch phone log"))),
onPressed: fetchCallLogs, child: const Text("Fetch phone log"))),
];

for (CallRecord call in _callRecords ?? []) {
children.addAll([
for (CallRecord call in _callRecords ?? <CallRecord>[]) {
children.addAll(<Widget>[
new Container(
height: 16.0,
),
Expand Down Expand Up @@ -97,7 +97,7 @@ class _MyAppState extends State<MyApp> {

return new MaterialApp(
home: new Scaffold(
appBar: new AppBar(title: new Text('PhoneLog plugin example')),
appBar: new AppBar(title: const Text('PhoneLog plugin example')),
body: new Center(
child: new Column(children: children),
),
Expand Down
11 changes: 6 additions & 5 deletions packages/phone_log/lib/phone_log.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,16 @@ class PhoneLog {
///The unit of [duration] is second.
Future<Iterable<CallRecord>> getPhoneLogs(
{Int64 startDate, Int64 duration}) async {
final _startDate = startDate?.toString();
final _duration = duration?.toString();
Iterable<Map<String, Object>> records = await _channel.invokeMethod(
'getPhoneLogs', {"startDate": _startDate, "duration": _duration});
final String _startDate = startDate?.toString();
final String _duration = duration?.toString();
final Iterable<Map<String, Object>> records = await _channel.invokeMethod(
'getPhoneLogs',
<String, String>{"startDate": _startDate, "duration": _duration});
return records?.map((Map<String, Object> m) => new CallRecord.fromMap(m));
}
}

var permissionMap = <String, PermissionStatus>{
Map<String, PermissionStatus> permissionMap = <String, PermissionStatus>{
'granted': PermissionStatus.granted,
'denied': PermissionStatus.denied,
'deniedAndCannotRequest': PermissionStatus.deniedAndCannotRequest
Expand Down
64 changes: 35 additions & 29 deletions packages/phone_log/test/phone_log_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,28 +23,29 @@ void main() {
mockChannelForDenied = new MockPlatformChannel();
mockChannelForDeniedCannotRequest = new MockPlatformChannel();

when(mockChannel.invokeMethod(typed<String>(any), any))
when(mockChannel.invokeMethod(any, any))
.thenAnswer((Invocation invocation) {
invokedMethod = invocation.positionalArguments[0];
arguments = invocation.positionalArguments[1];
return null;
});

when(mockChannelForGetLogs.invokeMethod('getPhoneLogs', any))
.thenAnswer((_) => new Future<List<Map<String, Object>>>(() => [
{
'formattedNumber': '123 123 1234',
'number': '1231231234',
'callType': 'INCOMING_TYPE',
'dateYear': 2018,
'dateMonth': 6,
'dateDay': 15,
'dateHour': 3,
'dateMinute': 16,
'dateSecond': 23,
'duration': 123
}
]));
when(mockChannelForGetLogs.invokeMethod('getPhoneLogs', any)).thenAnswer(
(_) =>
new Future<List<Map<String, Object>>>(() => <Map<String, Object>>[
<String, Object>{
'formattedNumber': '123 123 1234',
'number': '1231231234',
'callType': 'INCOMING_TYPE',
'dateYear': 2018,
'dateMonth': 6,
'dateDay': 15,
'dateHour': 3,
'dateMinute': 16,
'dateSecond': 23,
'duration': 123
}
]));

when(mockChannelForGranted.invokeMethod('checkPermission', any))
.thenAnswer((_) => new Future<String>(() => 'granted'));
Expand All @@ -58,55 +59,60 @@ void main() {

group('Phone log plugin', () {
test('fetch phone log', () async {
var phoneLog = new PhoneLog.private(mockChannelForGetLogs);
final PhoneLog phoneLog = new PhoneLog.private(mockChannelForGetLogs);

var records = await phoneLog.getPhoneLogs(
final Iterable<CallRecord> records = await phoneLog.getPhoneLogs(
startDate: new Int64(123456789), duration: new Int64(12));

print(records);
var record = records.first;
final CallRecord record = records.first;

expect(record.formattedNumber, '123 123 1234');
expect(record.callType, 'INCOMING_TYPE');
expect(record.number, '1231231234');
expect(record.dateYear, 2018);
expect(record.duration, 123);

var phoneLogMethod = new PhoneLog.private(mockChannel);
final PhoneLog phoneLogMethod = new PhoneLog.private(mockChannel);
await phoneLogMethod.getPhoneLogs(
startDate: new Int64(123456789), duration: new Int64(12));
expect(invokedMethod, 'getPhoneLogs');
expect(arguments, {'startDate': '123456789', 'duration': '12'});
expect(arguments,
<String, String>{'startDate': '123456789', 'duration': '12'});
});

test('check permission', () async {
var phoneLog = new PhoneLog.private(mockChannel);
final PhoneLog phoneLog = new PhoneLog.private(mockChannel);

await phoneLog.checkPermission();

expect(invokedMethod, 'checkPermission');
expect(arguments, null);

var phoneLogGranted = new PhoneLog.private(mockChannelForGranted);
var permissionGranted = await phoneLogGranted.checkPermission();
final PhoneLog phoneLogGranted =
new PhoneLog.private(mockChannelForGranted);
final PermissionStatus permissionGranted =
await phoneLogGranted.checkPermission();

expect(permissionGranted, PermissionStatus.granted);

var phoneLogDenied = new PhoneLog.private(mockChannelForDenied);
var permissionDenied = await phoneLogDenied.checkPermission();
final PhoneLog phoneLogDenied =
new PhoneLog.private(mockChannelForDenied);
final PermissionStatus permissionDenied =
await phoneLogDenied.checkPermission();

expect(permissionDenied, PermissionStatus.denied);

var phoneLogCannotRequest =
final PhoneLog phoneLogCannotRequest =
new PhoneLog.private(mockChannelForDeniedCannotRequest);
var permissionCannotRequest =
final PermissionStatus permissionCannotRequest =
await phoneLogCannotRequest.checkPermission();

expect(permissionCannotRequest, PermissionStatus.deniedAndCannotRequest);
});

test('request permission', () async {
var phoneLog = new PhoneLog.private(mockChannel);
final PhoneLog phoneLog = new PhoneLog.private(mockChannel);

await phoneLog.requestPermission();

Expand Down