Skip to content
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Commit e415e66

Browse files
committed
Merge branch 'master' of github.com:DutchCodingCompany/pin_lock into release/v0.0.3
2 parents 314edf4 + 12af445 commit e415e66

File tree

9 files changed

+30
-60
lines changed

9 files changed

+30
-60
lines changed

analysis_options.yaml

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
include: package:lint/analysis_options.yaml
1+
include: package:flutter_lints/flutter.yaml
22

33
analyzer:
4-
exclude:
5-
- "lib/**/*.g.dart"
6-
- "lib/**/*.freezed.dart"
7-
- "lib/**/*.mocks.dart"
8-
errors:
9-
todo: info
10-
enable-experiment:
11-
- nonfunction-type-aliases
4+
exclude:
5+
- "lib/**/*.mocks.dart"
6+
errors:
7+
todo: info
128

139
linter:
1410
rules:

android/src/main/kotlin/nl/dutchcodingcompany/pin_lock/PinLockPlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class PinLockPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
3232
}
3333
}
3434
}
35-
result.success(Unit)
35+
result.success(null)
3636
}
3737
else -> result.notImplemented()
3838
}

example/lib/main.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class _MyAppState extends State<MyApp> {
4848
theme: ThemeData(
4949
primarySwatch: Colors.indigo,
5050
textTheme: TextTheme(
51-
bodyText2: TextStyle(color: Colors.indigo),
51+
bodyMedium: TextStyle(color: Colors.indigo),
5252
),
5353
),
5454

@@ -96,7 +96,7 @@ class _InputField extends StatelessWidget {
9696
@override
9797
Widget build(BuildContext context) {
9898
final borderColor = state == InputFieldState.error
99-
? Theme.of(context).errorColor
99+
? Theme.of(context).colorScheme.error
100100
: Theme.of(context).primaryColor;
101101
double borderWidth = 1;
102102
if (state == InputFieldState.focused ||
@@ -142,7 +142,7 @@ class _Home extends StatelessWidget {
142142
children: [
143143
Text(
144144
'This is the home screen',
145-
style: Theme.of(context).textTheme.headline3,
145+
style: Theme.of(context).textTheme.displaySmall,
146146
textAlign: TextAlign.center,
147147
),
148148
TextButton(

lib/pin_lock.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'package:pin_lock/src/repositories/pin_repository_impl.dart';
1111
import 'package:shared_preferences/shared_preferences.dart';
1212

1313
export 'package:pin_lock/src/entities/authenticator.dart';
14+
export 'package:pin_lock/src/entities/biometric_availability.dart' show Available, Unavailable;
1415
export 'package:pin_lock/src/entities/biometric_method.dart';
1516
export 'package:pin_lock/src/entities/failure.dart';
1617
export 'package:pin_lock/src/entities/lock_controller.dart';

lib/src/entities/authenticator_impl.dart

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ class AuthenticatorImpl with WidgetsBindingObserver implements Authenticator {
7070
final lastActive = await _repository.getPausedTimestamp();
7171
if (lastActive != null) {
7272
final now = DateTime.now();
73-
if (now.millisecondsSinceEpoch - lastActive.millisecondsSinceEpoch >
74-
lockAfterDuration.inMilliseconds) {
73+
if (now.millisecondsSinceEpoch - lastActive.millisecondsSinceEpoch > lockAfterDuration.inMilliseconds) {
7574
_lockController.lock(
7675
availableMethods: await getAvailableBiometricMethods(),
7776
);
@@ -210,6 +209,8 @@ class AuthenticatorImpl with WidgetsBindingObserver implements Authenticator {
210209
case BiometricType.iris:
211210
methods.add(BiometricMethod.iris);
212211
break;
212+
default:
213+
break;
213214
}
214215
}
215216
return methods;
@@ -221,15 +222,13 @@ class AuthenticatorImpl with WidgetsBindingObserver implements Authenticator {
221222
if (!isSupported) {
222223
return const Unavailable(reason: LocalAuthFailure.notAvailable);
223224
}
224-
final storedValue =
225-
await _repository.isBiometricAuthenticationEnabled(userId: userId);
225+
final storedValue = await _repository.isBiometricAuthenticationEnabled(userId: userId);
226226
return Available(isEnabled: storedValue ?? false);
227227
}
228228

229229
@override
230230
Future<bool> isPinAuthenticationEnabled() async {
231-
final storedValue =
232-
await _repository.isPinAuthenticationEnabled(userId: userId);
231+
final storedValue = await _repository.isPinAuthenticationEnabled(userId: userId);
233232
return storedValue ?? false;
234233
}
235234

@@ -263,8 +262,7 @@ class AuthenticatorImpl with WidgetsBindingObserver implements Authenticator {
263262
Future<Either<LocalAuthFailure, Unit>> unlockWithBiometrics({
264263
required String userFacingExplanation,
265264
}) async {
266-
final biometricAvailability =
267-
await getBiometricAuthenticationAvailability();
265+
final biometricAvailability = await getBiometricAuthenticationAvailability();
268266
if (biometricAvailability is Available) {
269267
if (!biometricAvailability.isEnabled) {
270268
_lockController.lock(availableMethods: const []);
@@ -277,7 +275,7 @@ class AuthenticatorImpl with WidgetsBindingObserver implements Authenticator {
277275
try {
278276
final isSuccessful = await _biometricAuth.authenticate(
279277
localizedReason: userFacingExplanation,
280-
options: AuthenticationOptions(biometricOnly: true),
278+
options: const AuthenticationOptions(biometricOnly: true),
281279
);
282280
if (isSuccessful) {
283281
_lockController.unlock();
@@ -304,11 +302,9 @@ class AuthenticatorImpl with WidgetsBindingObserver implements Authenticator {
304302
}
305303

306304
Future<bool> _isLockedDueToTooManyAttempts() async {
307-
final failedAttemptsList =
308-
await _repository.getListOfFailedAttempts(userId: userId);
305+
final failedAttemptsList = await _repository.getListOfFailedAttempts(userId: userId);
309306
if (failedAttemptsList.length > maxRetries) {
310-
if (DateTime.now().difference(failedAttemptsList.last) <
311-
lockedOutDuration) {
307+
if (DateTime.now().difference(failedAttemptsList.last) < lockedOutDuration) {
312308
return true;
313309
}
314310
}
@@ -323,9 +319,7 @@ class AuthenticatorImpl with WidgetsBindingObserver implements Authenticator {
323319
final biometric = await getBiometricAuthenticationAvailability();
324320
if (biometric is Available) {
325321
_lockController.lock(
326-
availableMethods: biometric.isEnabled
327-
? await getAvailableBiometricMethods()
328-
: const [],
322+
availableMethods: biometric.isEnabled ? await getAvailableBiometricMethods() : const [],
329323
);
330324
}
331325
if (biometric is Unavailable) {

lib/src/presentation/authenticator_widget.dart

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class AuthenticatorWidget extends StatefulWidget {
6363
}) : super(key: key);
6464

6565
@override
66-
_AuthenticatorWidgetState createState() => _AuthenticatorWidgetState();
66+
State<AuthenticatorWidget> createState() => _AuthenticatorWidgetState();
6767
}
6868

6969
class _AuthenticatorWidgetState extends State<AuthenticatorWidget> {
@@ -92,12 +92,11 @@ class _AuthenticatorWidgetState extends State<AuthenticatorWidget> {
9292
builder: widget.lockScreenBuilder,
9393
inputNodeBuilder: widget.inputNodeBuilder,
9494
availableMethods: event.availableBiometricMethods,
95-
userFacingMessage:
96-
widget.userFacingBiometricAuthenticationMessage,
95+
userFacingMessage: widget.userFacingBiometricAuthenticationMessage,
9796
),
9897
);
9998
if (!_isShowingSplashScreen) {
100-
Overlay.of(context)?.insert(overlayEntry!);
99+
Overlay.of(context).insert(overlayEntry!);
101100
}
102101
}
103102
}
@@ -106,7 +105,7 @@ class _AuthenticatorWidgetState extends State<AuthenticatorWidget> {
106105
setState(() {
107106
_isShowingSplashScreen = false;
108107
if (overlayEntry != null) {
109-
Overlay.of(context)?.insert(overlayEntry!);
108+
Overlay.of(context).insert(overlayEntry!);
110109
}
111110
});
112111
});
@@ -126,8 +125,7 @@ class _AuthenticatorWidgetState extends State<AuthenticatorWidget> {
126125
if (snapshot.hasData && !_isShowingSplashScreen) {
127126
return widget.child;
128127
}
129-
return widget.splashScreenBuilder?.call() ??
130-
const Center(child: CircularProgressIndicator());
128+
return widget.splashScreenBuilder?.call() ?? const Center(child: CircularProgressIndicator());
131129
},
132130
);
133131
}
@@ -170,8 +168,7 @@ class _LockScreen extends StatelessWidget {
170168
error: state.error,
171169
availableBiometricMethods: availableMethods,
172170
onBiometricAuthenticationRequested: () {
173-
BlocProvider.of<LockCubit>(context)
174-
.unlockWithBiometrics(userFacingMessage);
171+
BlocProvider.of<LockCubit>(context).unlockWithBiometrics(userFacingMessage);
175172
},
176173
),
177174
),

lib/src/presentation/widgets/pin_input_widget.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class PinInputWidget extends StatefulWidget {
2525
}) : super(key: key);
2626

2727
@override
28-
_PinInputWidgetState createState() => _PinInputWidgetState();
28+
State<PinInputWidget> createState() => _PinInputWidgetState();
2929
}
3030

3131
class _PinInputWidgetState extends State<PinInputWidget> {

pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ dependencies:
2323
dev_dependencies:
2424
flutter_test:
2525
sdk: flutter
26-
build_runner: ^2.1.7
27-
lint: ^1.5.3
28-
mockito: ^5.0.17
26+
build_runner: ^2.3.3
27+
flutter_lints: ^2.0.1
28+
mockito: ^5.3.2
2929

3030
flutter:
3131
plugin:

test/pin_lock_test.dart

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)