Flutter 将单个变量推送(发送)到具有多个参数的新类
我正在尝试将kombiController.text值推送到一个新类,但在尝试了各种方法之后,我不知道还能做什么。我得到一个错误“应该是8个位置参数,但找到了0,我猜这是因为我的FeedbackForm类需要8,但我没有找到解决方案来修复它或设置一些默认参数 注意:另一个变量消息ekipaController正在正常发送,我在实现它时没有遇到任何问题 两天来,我一直在努力解决这个“小”问题,无论从哪个角度解决这个问题,我都会在其他地方遇到新问题 主屏幕.省道Flutter 将单个变量推送(发送)到具有多个参数的新类,flutter,Flutter,我正在尝试将kombiController.text值推送到一个新类,但在尝试了各种方法之后,我不知道还能做什么。我得到一个错误“应该是8个位置参数,但找到了0,我猜这是因为我的FeedbackForm类需要8,但我没有找到解决方案来修复它或设置一些默认参数 注意:另一个变量消息ekipaController正在正常发送,我在实现它时没有遇到任何问题 两天来,我一直在努力解决这个“小”问题,无论从哪个角度解决这个问题,我都会在其他地方遇到新问题 主屏幕.省道 import 'package:fl
import 'package:flutter/material.dart';
import 'secondscreen.dart';
import 'models/feedback_form.dart';
import 'package:flutter/widgets.dart';
class MainScreen extends StatefulWidget {
MainScreen({Key key}) : super(key: key);
@override
_MainScreenState createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
String kombi;
String valuePolja;
TextEditingController ekipaController = new TextEditingController();
TextEditingController kombiController = new TextEditingController();
// Default Drop Down Item.
String dropdownValue = 'Tom Cruise';
// To show Selected Item in Text.
String holder = '' ;
List listItem = [
"1", "2", "3", "4", "5"
];
void getDropDownItem(){
setState(() {
holder = dropdownValue ;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("DHL"),
),
body: Center(
child: Column(
children: <Widget> [
TextFormField(
controller: ekipaController,
onChanged: (text) {
valuePolja = text;
},
validator: (value){
if(value.isEmpty){
return "Enter Valid Name";
}else{
return null;
}
},
decoration: InputDecoration(
hintText: "Ime Ekipe",
),
),
DropdownButton(
hint: Text("Izberi Kombi: "),
dropdownColor: Colors.white,
icon: Icon(Icons.arrow_drop_down),
value: kombi,
onChanged: (newValue) {
setState(() {
kombi = newValue;
});
kombiController.text = newValue;
},
items: listItem.map((valueItem) {
return DropdownMenuItem(
value: valueItem,
child: Text(valueItem),
);
}).toList(),
),
Padding(
padding: EdgeInsets.only(top: 30, bottom: 30),
child :
//Printing Item on Text Widget
Text('Selected Item = ' + kombiController.text,
style: TextStyle (fontSize: 22, color: Colors.black))),
ElevatedButton(
child: Text('Next Screen',
style: TextStyle(
color: Colors.white,
),
),
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => SecondScreen(message: ekipaController.text)));
Navigator.push(context,
MaterialPageRoute(builder: (context) => FeedbackForm(kombiController: kombiController.text)));
}
),
],
),
)
);
}
}
导入“包装:颤振/材料.省道”;
导入“secondscreen.dart”;
导入“模型/反馈形式.dart”;
导入“package:flatter/widgets.dart”;
类MainScreen扩展StatefulWidget{
主屏幕({Key}):超级(Key:Key);
@凌驾
_MainScreenState createState()=>\u MainScreenState();
}
类_MainScreenState扩展状态{
弦孔比;
字符串valuePolja;
TextEditingController=new TextEditingController();
TextEditingController kombiController=新的TextEditingController();
//默认下拉项。
字符串dropdownValue='Tom Cruise';
//以文本形式显示所选项目。
字符串保持器=“”;
列表项=[
"1", "2", "3", "4", "5"
];
void getDropDownItem(){
设置状态(){
holder=下拉值;
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“DHL”),
),
正文:中(
子:列(
儿童:[
TextFormField(
控制器:ekipaController,
一旦更改:(文本){
valuePolja=文本;
},
验证器:(值){
if(value.isEmpty){
返回“输入有效名称”;
}否则{
返回null;
}
},
装饰:输入装饰(
hintText:“我爱你”,
),
),
下拉按钮(
提示:文本(“Izberi Kombi:”),
dropdownColor:Colors.white,
图标:图标(图标。箭头下拉),
价值:kombi,
一旦更改:(newValue){
设置状态(){
kombi=新值;
});
kombiController.text=newValue;
},
items:listItem.map((valueItem){
返回下拉菜单项(
值:valueItem,
子项:文本(valueItem),
);
}).toList(),
),
填充物(
填充:仅限边缘设置(顶部:30,底部:30),
儿童:
//在文本小部件上打印项目
Text('Selected Item='+kombiController.Text,
样式:TextStyle(字体大小:22,颜色:Colors.black)),
升降按钮(
子项:文本('下一屏幕',
样式:TextStyle(
颜色:颜色,白色,
),
),
已按下:(){
Navigator.push(上下文,
MaterialPage路由(生成器:(上下文)=>SecondScreen(消息:ekipaController.text));
Navigator.push(上下文,
MaterialPage路由(生成器:(上下文)=>FeedbackForm(kombiController:kombiController.text));
}
),
],
),
)
);
}
}
反馈形式
import 'package:dhl_app/mainscreen.dart';
import 'package:flutter/widgets.dart';
class FeedbackForm extends StatefulWidget {
const FeedbackForm(this.ime_ekipe, this.ime_stranke, this.postna_stevilka, this.teza, this.type, this.datum, this.dostavljeno, this.kombiController);
final String kombiController;
final String ime_ekipe;
final String ime_stranke;
final String postna_stevilka;
final String teza;
final String type;
final String datum;
final String dostavljeno;
//FeedbackForm(this._ime_ekipe, this._ime_stranke, this._postna_stevilka, this._teza, this._type, this._datum, this._dostavljeno, this.kombiController);
String toParams() => "?ime_ekipe=$ime_ekipe&ime_stranke=$ime_stranke&postna_stevilka=$postna_stevilka&teza=$teza&type=$type&datum=$datum&dostavljeno=$dostavljeno&kombi=$kombiController";
@override
State<StatefulWidget> createState() {
// TODO: implement createState
throw UnimplementedError();
}
}
import'程序包:dhl_app/mainscreen.dart';
导入“package:flatter/widgets.dart”;
类FeedbackForm扩展StatefulWidget{
常数反馈形式(this.ime_ekipe,this.ime_stranke,this.postna_stevilka,this.teza,this.type,this.datum,this.dostavljeno,this.kombiController);
最终的弦乐控制器;
最终字符串ime_ekipe;
最终字符串ime_stranke;
最终字符串postna_stevilka;
最后一串特萨;
最终字符串类型;
最终管柱基准;
最终管柱dostavljeno;
//反馈形式(这个。这个。这个。这个。斯特兰克。这个。斯特维卡。这个。泰扎。这个。类型。这个。数据,这个。多斯塔夫勒耶诺,这个。康比控制器);
字符串toParams()=>“?ime_ekipe=$ime_ekipe&ime_stranke=$ime_stranke&postna_stevilka=$postna_stevilka&teza=$teza&type=$type&datum=$datum&dostavljeno=$dostavljeno&kombi=$kombiController”;
@凌驾
状态createState(){
//TODO:实现createState
抛出未实现的错误();
}
}
secondscreen.dart(其他变量工作的地方)
导入“包装:颤振/材料.省道”;
导入“models/controller.dart”;
导入“模型/反馈形式.dart”;
导入“mainscreen.dart”;
类SecondScreen扩展StatefulWidget{
最终字符串消息;
const SecondScreen({Key,this.message}):super(Key:Key);
@凌驾
_SecondScreen createState()=>\u SecondScreen();
}
类_SecondScreen扩展状态{
var_controller=TextEditingController();
final _formKey=GlobalKey();
最终_scaffoldKey=GlobalKey();
//文本字段控制器
TextEditingController name控制器=TextEditingController();
TextEditingController emailController=TextEditingController();
TextEditingController电话号码控制器=TextEditingController();
TextEditingController反馈控制器=TextEditingController();
TextEditingController类型控制器=TextEditingController();
TextEditingController-dateController=TextEditingController();
TextEditingController dostavljenoController=TextEditingController();
TextEditingController kombiController=TextEditingController();
void _submitForm(){
if(_formKey.currentState.validate()){
import 'package:flutter/material.dart';
import 'models/controller.dart';
import 'models/feedback_form.dart';
import 'mainscreen.dart';
class SecondScreen extends StatefulWidget {
final String message;
const SecondScreen({Key key, this.message}) : super(key: key);
@override
_SecondScreen createState() => _SecondScreen();
}
class _SecondScreen extends State<SecondScreen> {
var _controller = TextEditingController();
final _formKey = GlobalKey<FormState>();
final _scaffoldKey = GlobalKey<ScaffoldState>();
//TextField Controllers
TextEditingController nameController = TextEditingController();
TextEditingController emailController = TextEditingController();
TextEditingController phoneNumberController = TextEditingController();
TextEditingController feedbackController = TextEditingController();
TextEditingController typeController = TextEditingController();
TextEditingController dateController = TextEditingController();
TextEditingController dostavljenoController = TextEditingController();
TextEditingController kombiController = TextEditingController();
void _submitForm(){
if(_formKey.currentState.validate()) {
FeedbackForm feedbackForm = FeedbackForm(
nameController.text,
emailController.text,
phoneNumberController.text,
feedbackController.text,
typeController.text,
dateController.text,
dostavljenoController.text,
kombiController.text,
);
FormController formController = FormController(
(String response) {
print(response);
if(response == FormController.STATUS_SUCCESS){
_showSnackBar("Feedback Submitted!");
}else {
_showSnackBar("Error Occured!");
}
});
_showSnackBar("Submitting Feedback");
formController.submitForm(feedbackForm);
}
}
_showSnackBar(String message) {
final snackBar = SnackBar(content: Text(message),);
_scaffoldKey.currentState.showSnackBar(snackBar);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Vnesi Podatke"),
),
key: _scaffoldKey,
body: Form(
key: _formKey,
child: Container(
padding: EdgeInsets.symmetric(vertical: 50, horizontal: 24),
child: Column(
children: <Widget> [
TextFormField(
controller: nameController,
validator: (value){
if(value.isEmpty){
return "Enter Valid Name";
}else{
return null;
}
},
decoration: InputDecoration(
hintText: "${widget.message}",
suffixIcon: IconButton(
onPressed: () => nameController.clear(),
icon: Icon(Icons.clear),
),
),
),
TextFormField(
controller: emailController,
validator: (value){
if(value.isEmpty){
return "Enter Valid Email";
}else{
return null;
}
},
decoration: InputDecoration(
hintText: "Ime Stranke",
suffixIcon: IconButton(
onPressed: () => emailController.clear(),
icon: Icon(Icons.clear),
),
),
),
TextFormField(
controller: phoneNumberController,
validator: (value){
if(value.isEmpty){
return "Enter Valid Mobile Number";
}else{
return null;
}
},
decoration: InputDecoration(
hintText: "Poštna Številka",
suffixIcon: IconButton(
onPressed: () => phoneNumberController.clear(),
icon: Icon(Icons.clear),
),
),
),
TextFormField(
controller: feedbackController,
validator: (value){
if(value.isEmpty){
return "Enter Valid Feedback";
}else{
return null;
}
},
decoration: InputDecoration(
hintText: "Kilogramov",
suffixIcon: IconButton(
onPressed: () => feedbackController.clear(),
icon: Icon(Icons.clear),
),
),
),
TextFormField(
controller: typeController,
validator: (value){
if(value.isEmpty){
return "Enter Valid Feedback";
}else{
return null;
}
},
decoration: InputDecoration(
hintText: "Tip",
suffixIcon: IconButton(
onPressed: () => typeController.clear(),
icon: Icon(Icons.clear),
),
),
),
TextFormField(
controller: dateController,
validator: (value){
if(value.isEmpty){
return "Enter Valid Feedback";
}else{
return null;
}
},
decoration: InputDecoration(
hintText: "Datum",
suffixIcon: IconButton(
onPressed: () => dateController.clear(),
icon: Icon(Icons.clear),
),
),
),
TextFormField(
controller: dostavljenoController,
validator: (value){
if(value.isEmpty){
return "Enter Valid Feedback";
}else{
return null;
}
},
decoration: InputDecoration(
hintText: "Dostavljeno",
suffixIcon: IconButton(
onPressed: () => dostavljenoController.clear(),
icon: Icon(Icons.clear),
),
),
),
RaisedButton(
color: Colors.blue,
textColor: Colors.white,
onPressed: _submitForm,
child: Text('Submit Feedback'),
)
],
)
),
)
);
}
}