【发布时间】:2020-02-06 13:07:04
【问题描述】:
我的 Stepper 超过 3 个步骤。
步进器工作正常Vertical 方向但是当我用FloatingActionButton 切换Horizontal 然后溢出像素。
附加屏幕截图:-
我的代码:-
import 'package:flutter/material.dart';
class StepperEx extends StatefulWidget {
@override
_StepperExState createState() => _StepperExState();
}
class _StepperExState extends State<StepperEx> {
int _currentStep = 0;
StepperType stepperType = StepperType.vertical;
switchStepType() {
setState(() => stepperType == StepperType.vertical
? stepperType = StepperType.horizontal
: stepperType = StepperType.vertical);
}
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomPadding: false,
appBar: AppBar(
title: Text('Stepper Example'),
),
body: Column(
children: <Widget>[
Expanded(
child: Stepper(
//physics: ClampingScrollPhysics(),
steps: _stepper(),
type: stepperType,
currentStep: this._currentStep,
onStepTapped: (step) {
setState(() {
this._currentStep = step;
});
},
onStepContinue: () {
setState(() {
if (this._currentStep < this._stepper().length - 1) {
this._currentStep = this._currentStep + 1;
} else {
//Logic
print('complete');
}
});
},
onStepCancel: () {
setState(() {
if (this._currentStep > 0) {
this._currentStep = this._currentStep - 1;
} else {
this._currentStep = 0;
}
});
},
),
),
],
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.swap_horizontal_circle),
onPressed: switchStepType,
),
);
}
List<Step> _stepper() {
List<Step> _steps = [
Step(
title: Text('Name'),
content: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: 'First Name'),
),
TextFormField(
decoration: InputDecoration(labelText: 'Last Name'),
),
],
),
isActive: _currentStep >= 0,
state: StepState.complete),
Step(
title: Text('Email'),
content: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: 'Email Address'),
),
TextFormField(
decoration: InputDecoration(labelText: 'Recovery Email'),
),
],
),
isActive: _currentStep >= 1,
state: StepState.disabled),
Step(
title: Text('Mobile No.'),
content: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: 'Mobile No.'),
),
TextFormField(
decoration:
InputDecoration(labelText: 'Alternative Mobile No.'),
),
],
),
isActive: _currentStep >= 2,
state: StepState.editing),
Step(
title: Text('Address'),
content: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: 'Address 1'),
),
TextFormField(
decoration: InputDecoration(labelText: 'Address 2'),
),
],
),
isActive: _currentStep >= 3,
state: StepState.error),
Step(
title: Text('Password'),
content: Column(
children: <Widget>[
TextFormField(
decoration: InputDecoration(labelText: 'Password'),
),
TextFormField(
decoration: InputDecoration(labelText: 'Confirm Password'),
),
],
),
isActive: _currentStep >= 4,
state: StepState.indexed),
];
return _steps;
}
}
【问题讨论】:
-
这是 Flutter 的步进器实现的问题。详情请参阅github.com/flutter/flutter/issues/40601。
标签: flutter overflow horizontal-scrolling stepper