[英]How do I pass data from one page to another?
我想將數據從模型數據發送到另一個頁面。 實際上getData函數有數據模型頁面,但是當我將數據發送到另一個頁面時,數據會返回null。 你能幫我么?
//model.dart
import 'dart:convert';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_database/firebase_database.dart';
import 'package:flutter/material.dart';
class Models {
var data;
Map jsondata = {};
var liste = new List();
Future<void> create(var table , data) async {
Firestore.instance.collection(table).document()
.setData(data).catchError((e){
print(e);
});
}
getData() async{
await Firestore.instance
.collection('musteri')
.document('-LgCmdigOCSqe9j-19lA')
.get()
.then((DocumentSnapshot datas) {
this.jsondata = datas.data;
});
return this.jsondata;
}
}
//chat.dart
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:chat/menu/bottomMenu.dart';
import 'package:chat/models/models.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class Chat extends StatelessWidget {
QuerySnapshot snapshot;
Models model = new Models();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Chat"),
centerTitle: true,
),
body: datas(),
bottomNavigationBar: BottomMenu(),
);
}
datas() {
model.getData();
print(model.jsondata);
}
}
當我在getData中使用print(this.jsondata)時,結果是{'name':'jhon','surname':'wick'}
但是chat.dart中的model.jsondata為null
你的ui是在填充模型數據之前構建的。所以你需要在完成數據拉入后重建。
class Models {
var data;
Map jsondata = {};
var liste = new List();
Future<Map> getData() async{
return Firestore.instance
.collection('musteri')
.document('-LgCmdigOCSqe9j-19lA')
.get()
.then((DocumentSnapshot datas) => datas.data);
}
}
class Chat extends StatefulWidget {
@override
_ChatState createState() => _ChatState();
}
class _ChatState extends State<Chat> {
QuerySnapshot snapshot;
Models _model;
Map _jsondata;
@override
void initState() {
super.initState();
_model = new Models();
_model.getData().then((data) {
setState(() {
_jsondata = data;
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Chat"),
centerTitle: true,
),
body: _jsondata == null
? Container()
: Container(
child: Center(
child: Text(
_jsondata["name"],
),
),
),
// bottomNavigationBar: BottomMenu(),
);
}
}
嘗試這樣的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.