【发布时间】:2020-05-18 12:24:08
【问题描述】:
问题是当setState() 调用时_qualificationRadioGroupValue 值更新但在构建方法调用其重置为其原始值之后我是初学者,所以不知道我做错了什么我只测试了2个单选按钮它在步进器之外工作,但在步进器中不工作我不知道为什么
这是我屏幕的代码
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
final title;
HomePage({this.title});
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
List<Step> _steps = <Step>[];
int _currentStep = 0;
int _isStepsCompleted = false;
@override
void initState() {
super.initState();
_steps.add(_lastQualificationStep());
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Stack(
children: <Widget>[
Stepper(
steps: _steps,
currentStep: _currentStep,
onStepTapped: (step) => onStepTapped(step),
onStepContinue: onStepContinue,
onStepCancel: onStepCancel,
),
],
),
);
}
void onStepContinue() {
_currentStep + 1 != _steps.length
? onStepTapped(_currentStep + 1)
: setState(() => _isStepsCompleted = true);
}
void onStepTapped(int step) => setState(() => _currentStep = step);
void onStepCancel() {
if (_currentStep > 0) {
onStepTapped(_currentStep - 1);
}
}
void setSelectRadioButton(int value, int groupValue) {
print('Radio Value: $value');
print('GroupValue before setState: $groupValue');
setState(() {
groupValue= value;
});
print('GroupValue after setState: $groupValue');
}
int _qualificationRadioGroupValue = 0;
Step _lastQualificationStep() {
List<RadioModel> qualifitcationList = [
RadioModel(
title: 'Pre-Engineering',
value: 0,
groupValue: _qualificationRadioGroupValue),
RadioModel(
title: 'Pre-Medical',
value: 1,
groupValue: _qualificationRadioGroupValue),
RadioModel(
title: 'ICS', value: 2, groupValue: _qualificationRadioGroupValue),
RadioModel(
title: 'Commerce',
value: 3,
groupValue: _qualificationRadioGroupValue),
];
return Step(
title: Text("What is your last qualification?"),
isActive: _currentStep == 0,
state: _currentStep == 0 ? StepState.editing : StepState.indexed,
content: Column(
children: _qualifitcationList
.map(
(qualification) => RadioListTile(
title: Text(qualification.title),
value: qualification.value,
groupValue: qualification.groupValue,
onChanged: (value) =>
setSelectRadioButton(value, qualification.groupValue),
),
)
.toList(),
),
);
}
}
class RadioModel {
final title;
final value;
final groupValue;
RadioModel({this.title, this.value, this.groupValue});
}
【问题讨论】:
标签: flutter dart radio-button stepper