【发布时间】:2021-08-03 13:18:32
【问题描述】:
我有一个步进表单,我用它来接收用户的输入。有 3 个步骤,在每个步骤中,用户提供输入,输入保存到保存按钮单击的列表中。现在,问题是,我可以在控制台上打印列表。但我不知道如何在按钮上方的屏幕上打印它,或者如果任何字段为空,我想在按钮上方显示错误消息。谁能帮帮我吗?我有以下代码。
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Stepper Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Stepper Tutorial'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _currentStep = 0;
TextEditingController nameController = TextEditingController();
TextEditingController emailController = TextEditingController();
TextEditingController addressController = TextEditingController();
List<String> demoList = [];
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: Column(
children: <Widget>[
Stepper(
steps: _mySteps(),
currentStep: this._currentStep,
onStepTapped: (step) {
setState(
() {
this._currentStep = step;
},
);
},
onStepContinue: () {
setState(
() {
if (this._currentStep < this._mySteps().length - 1) {
this._currentStep = this._currentStep + 1;
} else {
//Logic to check if everything is completed
print('Completed, check fields.');
}
},
);
},
onStepCancel: () {
setState(
() {
if (this._currentStep > 0) {
this._currentStep = this._currentStep - 1;
} else {
this._currentStep = 0;
}
},
);
},
),
ElevatedButton(
onPressed: viewList,
child: Text("Click to see List"),
),
],
),
);
}
viewList() {
if (nameController.text.isEmpty ||
emailController.text.isEmpty ||
addressController.text.isEmpty) {
// //// Print Error message display in the screen above the button //
} else {
demoList.add(nameController.text);
demoList.add(emailController.text);
demoList.add(addressController.text);
}
print(demoList);
}
List<Step> _mySteps() {
List<Step> _steps = [
Step(
title: Text('Step 1'),
content: TextField(
controller: nameController,
),
isActive: _currentStep >= 0,
),
Step(
title: Text('Step 2'),
content: TextField(
controller: emailController,
),
isActive: _currentStep >= 1,
),
Step(
title: Text('Step 3'),
content: TextField(
controller: addressController,
),
isActive: _currentStep >= 2,
)
];
return _steps;
}
}
【问题讨论】:
标签: flutter dart flutter-web