Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
e7389cc
[ci] migrate to Apple Silicon
fkorotkov May 10, 2022
c71b646
Fix RunnerTest config for google_maps_flutter
stuartmorgan-g May 11, 2022
eea37d5
changelog
stuartmorgan-g May 11, 2022
49e16fc
Move some tasks back to Intel
stuartmorgan-g May 11, 2022
e31c427
Log unexpeted FlutterErrors in tests instead of throwing
stuartmorgan-g May 11, 2022
7f6506c
Add temp debug NSLog statements
stuartmorgan-g May 11, 2022
225df85
Remove failed logging, add some details
stuartmorgan-g May 12, 2022
91ea52d
Don't assert for overfullfillment
fkorotkov May 12, 2022
d65a77f
Fullfill only when initialized
fkorotkov May 12, 2022
1ddf2a7
Move linting back to ARM
stuartmorgan-g May 13, 2022
001e214
Log event for debugging
fkorotkov May 13, 2022
5ceab37
Remove NSLog
stuartmorgan-g May 13, 2022
d68340a
Remove duplicate details from error
stuartmorgan-g May 13, 2022
6b47358
video_player changelog
stuartmorgan-g May 13, 2022
9caf835
iPhone 12
fkorotkov May 15, 2022
b490760
Reverted iPhone version
fkorotkov May 15, 2022
7fffeb9
Try Xcode 13.4 and macOS 12.4
fkorotkov May 16, 2022
4e0b259
Revert "Try Xcode 13.4 and macOS 12.4"
fkorotkov May 16, 2022
9713866
Revert "Revert "Try Xcode 13.4 and macOS 12.4""
fkorotkov May 16, 2022
60eb2f5
Try experimental config
fkorotkov May 17, 2022
d9d7875
Revert "Try experimental config"
fkorotkov May 18, 2022
a3771c4
Use only one simulator
fkorotkov May 18, 2022
71e2cb5
Set timeout to not waste resources in case of a hanging
fkorotkov May 18, 2022
d44df7c
[tools] Fix `publish` flag calculation (#5694)
stuartmorgan-g May 14, 2022
8ee7bd8
[camera]handle iOS camera access permission (#5215)
hellohuanlin May 14, 2022
2ccc39e
[image_picker] Fix 'messages.g.h' file not found (#5635)
co-kevin May 16, 2022
29241ad
[ci] Manually roll Flutter master (#5765)
stuartmorgan-g May 16, 2022
1fd508f
Roll Flutter from 036cae36697a to bf7a32628eef (49 revisions) (#5768)
engine-flutter-autoroll May 17, 2022
33934de
Roll Flutter from bf7a32628eef to bb9bbc601345 (1 revision) (#5769)
engine-flutter-autoroll May 17, 2022
63a6039
Roll Flutter from bb9bbc601345 to fd312f1ccff9 (1 revision) (#5770)
engine-flutter-autoroll May 17, 2022
c1c1332
Roll Flutter from fd312f1ccff9 to c248854d176b (1 revision) (#5771)
engine-flutter-autoroll May 17, 2022
f586229
[in_app_purchase] fixed a memory leak error (#5358)
yimao009 May 17, 2022
2656002
[local_auth] Windows support. (#4806)
azchohfi May 17, 2022
9cdd4b5
[google_sign_in_platform_interface] Add availability to mock models (…
Hwan-seok May 17, 2022
74042c0
Update cirrus secret. (#5774)
godofredoc May 17, 2022
18283a7
Add more Android plugin owners (#5624)
stuartmorgan-g May 17, 2022
66e56f0
[video_player]: Bump exoplayer from 2.17.0 to 2.17.1 in /packages/vid…
dependabot[bot] May 17, 2022
9da2a72
[tools] Validate example READMEs (#5775)
stuartmorgan-g May 18, 2022
c62a7ed
[webview_flutter] Initial v4.0 platform interface implementation (#5…
mvanbeusekom May 18, 2022
bd40099
[camera] Request access permission for audio (#5766)
hellohuanlin May 18, 2022
2e81edb
Roll Flutter from c248854d176b to 1994027986cf (1 revision) (#5777)
engine-flutter-autoroll May 18, 2022
f3d955a
[ci/tools] Add iOS/macOS analysis to catch deprecated code (#5778)
stuartmorgan-g May 18, 2022
72c1752
Add more CODEOWNERS (#5779)
stuartmorgan-g May 18, 2022
bf35c1b
[tools] Add `update-release-info` (#5643)
stuartmorgan-g May 18, 2022
dfa3e84
[local_auth] Adds federated Windows support (#5776)
azchohfi May 19, 2022
b0c19f0
[google_sign_in] Upgrade to GoogleSignIn 6.2, support arm64 simulator…
jmagman May 19, 2022
9d1311d
Roll Flutter from 1994027986cf to a4a8e73bce15 (31 revisions) (#5782)
engine-flutter-autoroll May 19, 2022
afc26ec
[ci] Updates iOS deprecation check to iOS 13 (#5786)
stuartmorgan-g May 19, 2022
216b216
[various] Set minimum Flutter versions to 2.8 (#5792)
stuartmorgan-g May 19, 2022
87cd4e7
[google_maps_flutter_web] Remove custom analysis file. (#5791)
ditman May 20, 2022
82cbfc8
[path_provider] Fix integration tests on macOS (#5773)
stuartmorgan-g May 20, 2022
0fcac82
iPhone 12
fkorotkov May 15, 2022
fc971fb
Use only one simulator
fkorotkov May 18, 2022
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
Prev Previous commit
Next Next commit
[local_auth] Windows support. (#4806)
  • Loading branch information
azchohfi authored and fkorotkov committed May 20, 2022
commit 26560024e387a61c5b9ac8404df30425b7236f3c
7 changes: 7 additions & 0 deletions packages/local_auth/local_auth_windows/AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Below is a list of people and organizations that have contributed
# to the Flutter project. Names should be added to the list like so:
#
# Name/Organization <email address>

Google Inc.
Alexandre Zollinger Chohfi <[email protected]>
3 changes: 3 additions & 0 deletions packages/local_auth/local_auth_windows/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## 1.0.0

* Initial release of Windows support.
25 changes: 25 additions & 0 deletions packages/local_auth/local_auth_windows/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Copyright 2013 The Flutter Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11 changes: 11 additions & 0 deletions packages/local_auth/local_auth_windows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# local\_auth\_windows

The Windows implementation of [`local_auth`][1].

## Usage

This package is [endorsed][2], which means you can simply use `local_auth`
normally. This package will be automatically included in your app when you do.

[1]: https://pub.dev/packages/local_auth
[2]: https://flutter.dev/docs/development/packages-and-plugins/developing-packages#endorsed-federated-plugin
46 changes: 46 additions & 0 deletions packages/local_auth/local_auth_windows/example/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
10 changes: 10 additions & 0 deletions packages/local_auth/local_auth_windows/example/.metadata
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.

version:
revision: c860cba910319332564e1e9d470a17074c1f2dfd
channel: stable

project_type: app
3 changes: 3 additions & 0 deletions packages/local_auth/local_auth_windows/example/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# local_auth_example

Demonstrates how to use the local_auth plugin.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// 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 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';

import 'package:local_auth_windows/local_auth_windows.dart';

void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();

testWidgets('canCheckBiometrics', (WidgetTester tester) async {
expect(
LocalAuthWindows().getEnrolledBiometrics(),
completion(isList),
);
});
}
241 changes: 241 additions & 0 deletions packages/local_auth/local_auth_windows/example/lib/main.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
// 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.

// ignore_for_file: public_member_api_docs

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:local_auth_platform_interface/local_auth_platform_interface.dart';
import 'package:local_auth_windows/local_auth_windows.dart';

void main() {
runApp(const MyApp());
}

class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);

@override
State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
_SupportState _supportState = _SupportState.unknown;
bool? _deviceSupportsBiometrics;
List<BiometricType>? _enrolledBiometrics;
String _authorized = 'Not Authorized';
bool _isAuthenticating = false;

@override
void initState() {
super.initState();
LocalAuthPlatform.instance.isDeviceSupported().then(
(bool isSupported) => setState(() => _supportState = isSupported
? _SupportState.supported
: _SupportState.unsupported),
);
}

Future<void> _checkBiometrics() async {
late bool deviceSupportsBiometrics;
try {
deviceSupportsBiometrics =
await LocalAuthPlatform.instance.deviceSupportsBiometrics();
} on PlatformException catch (e) {
deviceSupportsBiometrics = false;
print(e);
}
if (!mounted) {
return;
}

setState(() {
_deviceSupportsBiometrics = deviceSupportsBiometrics;
});
}

Future<void> _getEnrolledBiometrics() async {
late List<BiometricType> availableBiometrics;
try {
availableBiometrics =
await LocalAuthPlatform.instance.getEnrolledBiometrics();
} on PlatformException catch (e) {
availableBiometrics = <BiometricType>[];
print(e);
}
if (!mounted) {
return;
}

setState(() {
_enrolledBiometrics = availableBiometrics;
});
}

Future<void> _authenticate() async {
bool authenticated = false;
try {
setState(() {
_isAuthenticating = true;
_authorized = 'Authenticating';
});
authenticated = await LocalAuthPlatform.instance.authenticate(
localizedReason: 'Let OS determine authentication method',
authMessages: <AuthMessages>[const WindowsAuthMessages()],
options: const AuthenticationOptions(
useErrorDialogs: true,
stickyAuth: true,
),
);
setState(() {
_isAuthenticating = false;
});
} on PlatformException catch (e) {
print(e);
setState(() {
_isAuthenticating = false;
_authorized = 'Error - ${e.message}';
});
return;
}
if (!mounted) {
return;
}

setState(
() => _authorized = authenticated ? 'Authorized' : 'Not Authorized');
}

Future<void> _authenticateWithBiometrics() async {
bool authenticated = false;
try {
setState(() {
_isAuthenticating = true;
_authorized = 'Authenticating';
});
authenticated = await LocalAuthPlatform.instance.authenticate(
localizedReason:
'Scan your fingerprint (or face or whatever) to authenticate',
authMessages: <AuthMessages>[const WindowsAuthMessages()],
options: const AuthenticationOptions(
useErrorDialogs: true,
stickyAuth: true,
biometricOnly: true,
),
);
setState(() {
_isAuthenticating = false;
_authorized = 'Authenticating';
});
} on PlatformException catch (e) {
print(e);
setState(() {
_isAuthenticating = false;
_authorized = 'Error - ${e.message}';
});
return;
}
if (!mounted) {
return;
}

final String message = authenticated ? 'Authorized' : 'Not Authorized';
setState(() {
_authorized = message;
});
}

Future<void> _cancelAuthentication() async {
await LocalAuthPlatform.instance.stopAuthentication();
setState(() => _isAuthenticating = false);
}

@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: ListView(
padding: const EdgeInsets.only(top: 30),
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
if (_supportState == _SupportState.unknown)
const CircularProgressIndicator()
else if (_supportState == _SupportState.supported)
const Text('This device is supported')
else
const Text('This device is not supported'),
const Divider(height: 100),
Text(
'Device supports biometrics: $_deviceSupportsBiometrics\n'),
ElevatedButton(
onPressed: _checkBiometrics,
child: const Text('Check biometrics'),
),
const Divider(height: 100),
Text('Enrolled biometrics: $_enrolledBiometrics\n'),
ElevatedButton(
onPressed: _getEnrolledBiometrics,
child: const Text('Get enrolled biometrics'),
),
const Divider(height: 100),
Text('Current State: $_authorized\n'),
if (_isAuthenticating)
ElevatedButton(
onPressed: _cancelAuthentication,
child: Row(
mainAxisSize: MainAxisSize.min,
children: const <Widget>[
Text('Cancel Authentication'),
Icon(Icons.cancel),
],
),
)
else
Column(
children: <Widget>[
ElevatedButton(
onPressed: _authenticate,
child: Row(
mainAxisSize: MainAxisSize.min,
children: const <Widget>[
Text('Authenticate'),
Icon(Icons.perm_device_information),
],
),
),
ElevatedButton(
onPressed: _authenticateWithBiometrics,
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(_isAuthenticating
? 'Cancel'
: 'Authenticate: biometrics only'),
const Icon(Icons.fingerprint),
],
),
),
],
),
],
),
],
),
),
);
}
}

enum _SupportState {
unknown,
supported,
unsupported,
}
Loading