Как вернуть виджет в зависимости от логического значения Firestore - PullRequest
0 голосов
/ 28 мая 2019

Я хочу использовать возврат из функции floatingButton, чтобы создать кнопку в HomePage.

import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';

abstract class AcountTypeManager{
    Widget floatingButton(BuildContext context);

}



class AcountElements implements AcountTypeManager{

    @override
    FloatingActionButton floatingButton(BuildContext context) {

     FloatingActionButton button = new FloatingActionButton();

     FirebaseAuth.instance.currentUser().then((user){

              FloatingActionButton buttonPacient = new FloatingActionButton(
              child: Icon(Icons.access_alarms),
              onPressed: (){
                print('test');
              }
              );


              FloatingActionButton buttonDoctor = new FloatingActionButton(
              child: Icon(Icons.calendar_today),
              onPressed: (){
                print('test');
              }
              );



      Firestore.instance
      .collection('/users')
      .where('uid', isEqualTo: user.uid)
      .getDocuments()
      .then((docs){
          if(docs.documents[0].exists){
            if(docs.documents[0].data['isDoctor'] == true){
              button = buttonDoctor;
              return button;
            }
            else
            {

              button = buttonDoctor;//button = buttonPacient;
              return button;
           }

           }
              button = buttonDoctor;
           return button;
      }
      );
    }
    );
    return button;
    }

}
</code>

Домашняя страница:

class HomePageState extends State<HomePage>  {


  @override
  Widget build(BuildContext context) {

    FloatingActionButton button = new FloatingActionButton(onPressed: (){},);
    button = AcountElements().floatingButton(context);

       return Scaffold(

       floatingActionButton: button,

Но кнопка, кажется, не появляется (только пустая кнопка, которую я первоначально объявил в функции floatingButton):

 FloatingActionButton button = new FloatingActionButton();

Я новичок во флаттереЯ явно что-то делаю не так.Может ли кто-нибудь помочь мне с ответом?

...