>2.12 so I am making the changes and I am stuck at this particular error and not able to find any solution for it.non-nullable or ``null-safety``` issue Future<bool?> _onBackPressed() async {
return showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Do you want to exit without saving changes?'),
content:
Text('Please press the SAVE button at the bottom of the page'),
actions: <Widget>[
TextButton(
child: Text('NO'),
onPressed: () {
Navigator.of(context).pop(false);
},
),
TextButton(
child: Text('YES'),
onPressed: () {
Navigator.of(context).pop(true);
Navigator.of(context).pop(true);
},
),
],
);
});
}
..
return WillPopScope(
onWillPop: () => _onBackPressed, // causing error
child: Scaffold(
key: _scaffoldkey,
body: SafeArea(
child: SingleChildScrollView(
child: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Stack(
children: <Widget>[
Positioned(
child: AppBar(
centerTitle: true,
title: Text(
"Sample",
style: TextStyle(
fontFamily: 'LobsterTwo',
fontStyle: FontStyle.italic,
fontWeight: FontWeight.bold,
fontSize: 18.0,
color: Colors.black87,
),
),
backgroundColor: Colors.transparent,
elevation: 0,
leading: IconButton(
icon: Icon(
Icons.arrow_back,
color: Colors.black,
size: 30,
),
onPressed: () {
_onBackPressed();
},
..
..
),
),
),
],
),
],
),
),
),
),
),
);

You can try like this
onWillPop: () async {
bool? result= await _onBackPressed();
if(result == null){
result = false;
}
return result!;
},
Since your _onBackPressed function return Future<bool?>,
and onWillPop require a Future<bool>.
what I do is use result to get your return from _onBackPressed. The return may be true false or null.So I add a null checking for null value and change it to false. Last thing is the key, use ! to change the nullable bool? to bool. result! means you guarantee that result is not null even you defined it nullable.
onWillPop expects a Future<bool> which means return value will either be true or false but the return type of _onBackPressed is Future<bool?> which means the return value be either true, false or null. Change the return type of _onWillPop from Future<bool?> to Future<bool>.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With