mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Migrate ios_add2app_life_cycle to nullsafety (#80617)
This commit is contained in:
parent
fdda777e34
commit
013dc3dd7c
@ -8,14 +8,14 @@ import 'package:flutter/rendering.dart';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
|
|
||||||
VoidCallback originalSemanticsListener;
|
VoidCallback? originalSemanticsListener;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
// Disconnects semantics listener for testing purposes.
|
// Disconnects semantics listener for testing purposes.
|
||||||
originalSemanticsListener = ui.window.onSemanticsEnabledChanged;
|
originalSemanticsListener = ui.window.onSemanticsEnabledChanged;
|
||||||
ui.window.onSemanticsEnabledChanged = null;
|
ui.window.onSemanticsEnabledChanged = null;
|
||||||
RendererBinding.instance.setSemanticsEnabled(false);
|
RendererBinding.instance?.setSemanticsEnabled(false);
|
||||||
// If the test passes, LifeCycleSpy will rewire the semantics listener back.
|
// If the test passes, LifeCycleSpy will rewire the semantics listener back.
|
||||||
runApp(const LifeCycleSpy());
|
runApp(const LifeCycleSpy());
|
||||||
}
|
}
|
||||||
@ -28,7 +28,7 @@ void main() {
|
|||||||
///
|
///
|
||||||
/// Rewiring semantics is a signal to native IOS test that the test has passed.
|
/// Rewiring semantics is a signal to native IOS test that the test has passed.
|
||||||
class LifeCycleSpy extends StatefulWidget {
|
class LifeCycleSpy extends StatefulWidget {
|
||||||
const LifeCycleSpy({Key key}) : super(key: key);
|
const LifeCycleSpy({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_LifeCycleSpyState createState() => _LifeCycleSpyState();
|
_LifeCycleSpyState createState() => _LifeCycleSpyState();
|
||||||
@ -40,36 +40,36 @@ class _LifeCycleSpyState extends State<LifeCycleSpy> with WidgetsBindingObserver
|
|||||||
AppLifecycleState.inactive,
|
AppLifecycleState.inactive,
|
||||||
AppLifecycleState.resumed,
|
AppLifecycleState.resumed,
|
||||||
];
|
];
|
||||||
List<AppLifecycleState> _actualLifeCycleSequence;
|
List<AppLifecycleState?>? _actualLifeCycleSequence;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState(){
|
void initState(){
|
||||||
super.initState();
|
super.initState();
|
||||||
WidgetsBinding.instance.addObserver(this);
|
WidgetsBinding.instance?.addObserver(this);
|
||||||
_actualLifeCycleSequence = <AppLifecycleState>[
|
_actualLifeCycleSequence = <AppLifecycleState?>[
|
||||||
ServicesBinding.instance.lifecycleState
|
ServicesBinding.instance?.lifecycleState
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
WidgetsBinding.instance.removeObserver(this);
|
WidgetsBinding.instance?.removeObserver(this);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void didChangeAppLifecycleState(AppLifecycleState state) {
|
void didChangeAppLifecycleState(AppLifecycleState state) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_actualLifeCycleSequence = List<AppLifecycleState>.from(_actualLifeCycleSequence);
|
_actualLifeCycleSequence = List<AppLifecycleState>.from(_actualLifeCycleSequence!);
|
||||||
_actualLifeCycleSequence.add(state);
|
_actualLifeCycleSequence?.add(state);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (const ListEquality<AppLifecycleState>().equals(_actualLifeCycleSequence, _expectedLifeCycleSequence)) {
|
if (const ListEquality<AppLifecycleState?>().equals(_actualLifeCycleSequence, _expectedLifeCycleSequence)) {
|
||||||
// Rewires the semantics harness if test passes.
|
// Rewires the semantics harness if test passes.
|
||||||
RendererBinding.instance.setSemanticsEnabled(true);
|
RendererBinding.instance?.setSemanticsEnabled(true);
|
||||||
ui.window.onSemanticsEnabledChanged = originalSemanticsListener;
|
ui.window.onSemanticsEnabledChanged = originalSemanticsListener;
|
||||||
}
|
}
|
||||||
return const MaterialApp(
|
return const MaterialApp(
|
||||||
|
@ -14,7 +14,7 @@ description: A new flutter module project.
|
|||||||
version: 1.0.0+1
|
version: 1.0.0+1
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.0.0-dev.68.0 <3.0.0"
|
sdk: ">=2.12.0 <3.0.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
|
Loading…
Reference in New Issue
Block a user