I am trying to go to the LoginScreen from my StartScreen but it does not work when I click on the elevated button
PersonStatus(
label: 'EMPLOYER',
imageProvider: 'assets/images/employer.png',
onPressed: (context) {
int employerNum = 1;
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LoginScreen(
employerNumber: employerNum,
),
));
},
),
Following is the LoginScreen
class LoginScreen extends StatefulWidget {
final int employerNumber;
const LoginScreen({Key? key, required this.employerNumber}) : super(key: key);
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
@override
Widget build(BuildContext context) {
return Form(
child: ListView(
children: [
PersonStatus(
label: widget.employerNumber == 1 ? 'EMPLOYER' : 'EMPLOYEE',
imageProvider: widget.employerNumber == 1
? 'assets/images/employer.png'
: 'assets/images/employee.png'),
],
),
);
}
}
Although I passed some parameters forward I expected it to work.
CodePudding user response:
Maybe you are passing the wrong context to the navigator, try removing the context parameter in the onpressed:
PersonStatus(
label: 'EMPLOYER',
imageProvider: 'assets/images/employer.png',
onPressed: () {
int employerNum = 1;
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LoginScreen(
employerNumber: employerNum,
),
));
},
),
CodePudding user response:
You can create callback for PersonStatus:
PersonStatus(
Function(int result) onTap// it's a callback
label: 'EMPLOYER',
imageProvider: 'assets/images/employer.png',
onPressed: (context) {
int employerNum = 1;
onTap(employerNum);
},
)
and then use it:
class LoginScreen extends StatefulWidget {
final int employerNumber;
const LoginScreen({Key? key, required this.employerNumber}) : super(key: key);
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
@override
Widget build(BuildContext context) {
return Form(
child: ListView(
children: [
PersonStatus(
label: widget.employerNumber == 1 ? 'EMPLOYER' : 'EMPLOYEE',
imageProvider: widget.employerNumber == 1
? 'assets/images/employer.png'
: 'assets/images/employee.png',
onTap: (result) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LoginScreen(
employerNumber: employerNum,
),
));
},),
],
),
);
}
}
