首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Dart中的两个屏幕之间传递数据

如何在Dart中的两个屏幕之间传递数据
EN

Stack Overflow用户
提问于 2022-06-16 23:29:42
回答 2查看 44关注 0票数 0

我需要使用dart将数据发送到另一个屏幕,我尝试在另一个屏幕(editdata.dart)上创建构造函数,以便从主屏幕(readdata.dart)获取数据,这是有状态的小部件,问题在于:createState() => EditFire() EditFire类需要传递参数,但我还没有数据。

editdata.dart:

代码语言:javascript
复制
class EditData extends StatefulWidget {
  @override

  //Here the Error Occurs//

  State<StatefulWidget> createState() => EditFire();
}

class EditFire extends State<EditData> {
  EditFire(String ID, String date, String time, String dest, String src){
    currentID = ID;
    olddate = date;
    oldtime = time;
    _destinationcontroller.text = dest;
    _sourcecontroller.text = src;
  }
  late String currentID;
  final _destinationcontroller = TextEditingController();
  final _sourcecontroller = TextEditingController();
  late String olddate;
  late String oldtime;
}

在readdata.dart中:

代码语言:javascript
复制
EditFire("2","17/6/2022","2:25","NewYork","Japan");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-17 03:33:21

第一页

代码语言:javascript
复制
onPressed: () { 
      Navigator.of(context).push(MaterialPageRoute(builder: (_){
        return EditData("2","17/6/2022","2:25","NewYork","Japan");
      }));
    },

要接收数据的第二页

代码语言:javascript
复制
class EditData extends StatefulWidget {

 String currentID;
   String _destinationcontroller;
   String _sourcecontroller;
   String olddate;
   String oldtime;


   EditData(this.currentID, this._destinationcontroller, this._sourcecontroller,
      this.olddate, this.oldtime, {Key? key}) : super(key: key);

  @override
  State<EditData> createState() => _EditDataState();
}

class _EditDataState extends State<EditData> {

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(child:
        Text('${widget.currentID}'),),
    );
  }
}
票数 1
EN

Stack Overflow用户

发布于 2022-06-17 05:37:47

要将EditData的数据访问到EditFire,不需要将其传递到构造函数中。如您所见,EditFireEditData的状态。

因此,如果您想在EditFire中获得用于EditData的任何内容,您可以像widget.abc那样使用它。

代码语言:javascript
复制
class EditData extends StatefulWidget {
  // here, in constructor of widget, we are gathering values.
  EditData(
      {required this.currentID,
      required this.olddate,
      required this.oldtime,
      Key? key})
      : super(key: key);
  String currentID;
  String olddate;
  String oldtime;

  State<StatefulWidget> createState() => EditFire();
}

// this is a state widget of EditData. so no need to pass value in constructor of state widget.

class EditFire extends State<EditData> {
  final _destinationcontroller = TextEditingController();
  final _sourcecontroller = TextEditingController();
  String? currentID;
  String? olddate;
  String? oldtime;

  @override
  void initState() {
    super.initState();

    // you can get the values like this
    currentID = widget.currentID;
    olddate = widget.olddate;
    oldtime = widget.oldtime;
  }
}

要将值传递给EditData,需要将其传递给构造函数。喜欢,

代码语言:javascript
复制
EditData(currentID: "", olddate: "", oldtime: "");

希望,这将解决你的问题,仍未解决,请与问题评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72652882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档