Flutter 将单个变量推送(发送)到具有多个参数的新类

Flutter 将单个变量推送(发送)到具有多个参数的新类,flutter,Flutter,我正在尝试将kombiController.text值推送到一个新类,但在尝试了各种方法之后,我不知道还能做什么。我得到一个错误“应该是8个位置参数,但找到了0,我猜这是因为我的FeedbackForm类需要8,但我没有找到解决方案来修复它或设置一些默认参数 注意:另一个变量消息ekipaController正在正常发送,我在实现它时没有遇到任何问题 两天来,我一直在努力解决这个“小”问题,无论从哪个角度解决这个问题,我都会在其他地方遇到新问题 主屏幕.省道 import 'package:fl

我正在尝试将kombiController.text值推送到一个新类,但在尝试了各种方法之后,我不知道还能做什么。我得到一个错误“应该是8个位置参数,但找到了0,我猜这是因为我的FeedbackForm类需要8,但我没有找到解决方案来修复它或设置一些默认参数

注意:另一个变量消息ekipaController正在正常发送,我在实现它时没有遇到任何问题

两天来,我一直在努力解决这个“小”问题,无论从哪个角度解决这个问题,我都会在其他地方遇到新问题

主屏幕.省道

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'),
                  )
                ],
              )
          ),
        )
    );
  }
}