Как передать данные с одной страницы на другую? - PullRequest
0 голосов
/ 03 июня 2019

Я хочу отправить данные на другую страницу из полученных данных модели.На самом деле есть данные о функции getData на странице модели, но когда я отправляю данные на другую страницу, данные возвращаются к нулю.Не могли бы вы мне помочь?

//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);
  }
}

Когда я использую print (this.jsondata) в getData, результатом будет {'name': 'jhon', 'фамилия': 'wick'}

, но модель.jsondata в chat.dart пуста

1 Ответ

0 голосов
/ 03 июня 2019

Ваш пользовательский интерфейс создается до того, как данные модели будут заполнены. Так что вам нужно перестроить, как только вы закончите извлекать данные.

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

Попробуйте что-нибудь подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...