如何从 Stepper 中的子小部件正确获取文本输入?我想在触发 onStepContinue
时运行 bloc 事件。我会使用 ChangeNotifier 吗?我不想使用 globalkeys 因为它不推荐对吗?
ApplicationPage.dart
class _ApplicationFormWidgetState extends State<ApplicationFormWidget> {
int _currentStep = 0;
List<Step> _mySteps = [
Step(
title: Text('Personal Information'),
isActive: true,
content: PersonalInfo()),
Step(
title: Text('Business Information'),
isActive: true,
content: BusinessInfo()),
];
@override
Widget build(BuildContext context) {
return Stepper(
physics: ClampingScrollPhysics(),
steps: _mySteps,
currentStep: this._currentStep,
onStepContinue: () {
setState(() {
BlocProvider.of<ApplicationBloc>(context)
.add(CreatePersonalInfoEvent(
firstName: _firstName.text,
lastName: _lastname.text,
........
));
});
},
);
}
}
个人信息.dart
class PersonalInfo extends StatefulWidget {
const PersonalInfo({Key key}) : super(key: key);
@override
_PersonalInfoState createState() => _PersonalInfoState();
}
class _PersonalInfoState extends State<PersonalInfo> {
var _firstName = TextEditingController();
var _lastName = TextEditingController();
@override
Widget build(BuildContext context) {
return Column(
children: [
TextFieldTemplate(
labelText: 'First Name',
controller: _firstName,
validationType: ValidationType.notNull,
),
TextFieldTemplate(
labelText: 'Last Name',
controller: _lastName,
validationType: ValidationType.notNull,
),
],
);
}