- Updates to README
- Fix for app still locking if the app resumes before the end of the background lock latency
- Inactive state!
- When the app becomes inactive (e.g. viewing the device's recent app switcher or notification center) you can now show a custom screen (see issue #6 for limitations)
- This can be used instead of or along side the existing lock screen mechanism
- Deprecation:
lockScreen
is now deprecated and will be removed in the next major version, please uselockScreenBuilder
instead (closes issue #23)
- Breaking change: requires Flutter 3.16.0 or greater
- Breaking change: requires Dart 3.0.0 or greater
- Using
AppLifecycleState.hidden
instead ofAppLifecycleState.paused
- Package upgrades and deprecation fixes
Version 4.0.0
general availabilty, see changes in 4.0.0-dev.0 - 21st November 2022
below.
MaterialApp
is no longer used under the hood!
Version 4.0.0
uses a Navigator
directly instead of a MaterialApp
. The new required use of AppLock
allows you to make use of your own MaterialApp
's theming.
Old:
void main() {
runApp(AppLock(
builder: (arg) => MyApp(data: arg),
lockScreen: LockScreen(),
));
}
New:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
...
@override
Widget build(BuildContext context) {
return MaterialApp(
...
builder: (context, child) => AppLock(
builder: (context, arg) => child!,
lockScreen: LockScreen(),
),
...
);
}
}
Breaking changes:
builder
now requires a callback which receives aBuildContext
and anObject?
theme
is no longer available
Non-breaking changes:
AppLock
now exposes alaunchArg
property which is anObject?
Flutter 3 support!
Flutter 3 was always supported, but the !
operator has been removed from calls to WidgetsBinding.instance
which was causing an annoying warning.
All packages have been upgraded and the example project has also been upgraded.
Migrated to null-safety!
There are now also integration tests in the example project which can be run using flutter test integration_test/integration_tests.dart
.
Added the ability to override the theme
property of the MaterialApp
which AppLock
uses internally.
runApp(AppLock(
...
theme: ThemeData(
textTheme: TextTheme(
headline1: TextStyle(fontSize: 32),
),
),
));
debugShowCheckedModeBanner
has also been set to false.
Minor updates to docs.
New functionality to specify a period of time between the app going into the background state and when the lock screen should be shown.
runApp(AppLock(
...,
backgroundLockLatency: const Duration(seconds: 30),
));
This allows the app to go into the background state for the specified duration without causing the lock screen to be shown.
showLockScreen
is now a Future
.
await AppLock.of(context).showLockScreen();
print('Did unlock!');
New functionality to show the lock screen on-demand.
AppLock.of(context).showLockScreen();
Update to description.
New functionality to enable or disable the lockScreen
at launch and on-demand.
runApp(AppLock(
builder: ...,
lockScreen: ...,
enabled: false,
));
AppLock.of(context).enable();
AppLock.of(context).disable();
- Removing deprecating
child
method in preference for thebuilder
method. - Updating Flutter version constraints
Deprecating child
method in preference for the builder
method - simply a name change.
Breaking change
An argument can now be passed in to the AppLock
method didUnlock
and is accessible through the builder method, child
- this should be considered a breaking change as the builder method, child
requires a parameter even if null is passed in to didUnlock
.
Initial release
Use AppLock
to provide lock screen functionality to you Flutter apps.