Передать значение из класса на вкладку в том же файле дротика в Flutter - PullRequest
0 голосов
/ 15 февраля 2020

Я новый пользователь во флаттере, я выбираю значение из FireStore (majname), и у меня есть две вкладки в одном файле, я хочу передать значение на две вкладки.

Я искал и не нашел способа сделать это, можете ли вы помочь мне и объяснить мне, как я это сделаю?

Я искал и не нашел способа сделать это, кто-нибудь может мне помочь и объяснить мне, как я это сделаю?

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

    class Files extends StatefulWidget {
    @override
    _FilesState createState() => _FilesState();
    }

    class _FilesState extends State<Files> {
  var my_uid;
  var majname;

  @override
  void initState() {
    super.initState();

    FirebaseAuth.instance.currentUser().then((user) {
      setState(() {
        my_uid = user.uid;
        print(user.uid);
      });

      Firestore.instance
          .collection('users')
          .where('uid', isEqualTo: my_uid.toString())
          .getDocuments()
          .then((docs) {
        Firestore.instance
            .document('/users/${docs.documents[0].documentID}')
            .get()
            .then((val) {
          setState(() {
            majname = val.data['majname'];
          });
        }).catchError((e) {
          print(e);
        });
      });
    }).catchError((e) {
      print(e);
    });
  }

  @override
  Widget build(BuildContext context) {
    return new DefaultTabController(
      length: 3,
      child: Scaffold(
        appBar: GradientAppBar(
          automaticallyImplyLeading: true,
          backgroundColorStart: Colors.deepPurple,
          backgroundColorEnd: Colors.purple,
          title: Text(
            'Files Manager',
            style: TextStyle(fontWeight: FontWeight.bold),
          ),
          bottom: TabBar(
            isScrollable: true,
            tabs: <Widget>[
              Tab(
                icon: new Icon(Icons.person_pin),
                text: "My Files",
              ),
              Tab(
                icon: new Icon(Icons.school),
                text: "Major Files",
              ),
            ],
          ),
        ),
        body: TabBarView(
          children: <Widget>[
            MyFiles(),
            MajFiles(),
          ],
        ),
      ),
    );
  }
}

// My
class MyFiles extends StatefulWidget {
  @override
  _MyFilesState createState() {
    return _MyFilesState();
  }
}

class _MyFilesState extends State<MyFiles> {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Center(
          child: Text('My'),
        ),
      ],
    );
  }
}

// Maj
class MajFiles extends StatefulWidget {
  @override
  _MajFilesState createState() {
    return _MajFilesState();
  }
}

class _MajFilesState extends State<MajFiles> {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Center(
          child: Text('Maj'),
        ),
      ],
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...