簡體   English   中英

如何將數據從一個頁面傳遞到另一個頁面?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM