调用 isTeacher() 函数时我的 Stream 没有更新

my Stream is not updating when isTeacher() function is called

我想要实现的是从我的数据库的特定集合(教师)加载数据。所以我正在使用一个名为 isTeacher() 的函数。它检查当前用户的 uid 是否属于该集合。如果不是,那就是学生。它将值存储在一个名为 value 的字符串中。因此,当我使用流生成器加载其特定集合或文档中可用的数据时,我的流生成器​​会显示循环进度,之后,它不会加载数据。任何帮助表示赞赏。 谢谢

`class MyClasses extends StatefulWidget {
  @override
  _MyClasses createState() => _MyClasses();
}

String value;
String classPassword;
List<dynamic> catchUserDetails = [];

class _MyClasses extends State<MyClasses> { 

Future isTeacher() {
    return FirebaseFirestore.instance
        .collection('teacher')
        .doc(FirebaseAuth.instance.currentUser.uid)
        .get()
        .then((DocumentSnapshot doc) {
      value = doc.exists.toString();
      print(doc.data());
      print(value);
      print('isteacher called in method');
    });
  }


@override
  Widget build(BuildContext context) {
    isTeacher();
    return Scaffold(
    body: SafeArea(
        child: StreamBuilder(
          stream: FirebaseFirestore.instance
              .collection(value)
              .doc(FirebaseAuth.instance.currentUser.uid)
              .collection('class')
              .snapshots(),
          builder: (context, snapshot) {
            if (!snapshot.hasData) {
              return Center(
                child: CircularProgressIndicator(
                  backgroundColor: Colors.lightBlueAccent,
                ),
              );
            } else {
              final messages = snapshot.data.documents.reversed;

              List<GenerateClass> messageBubbles = [];
              for (var message in messages) {
                final messageText = message.data()['className'];
                final messageBubble = GenerateClass(
                  classID: messageText,
                  //nnouncementID: i,
                );
                messageBubbles.add(messageBubble);
              }

              return ListView(
                //itemExtent: 100,
                children: messageBubbles,
              );
            }
          },
        ),
      ),
    );`

使用 FutureBuilder 解决了它

FutureBuilder(
        future: isTeacher(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return StreamBuilder();