在Tabview容器中显示来自我的Multiprovider的数据

时间:2020-10-24 21:46:00

标签: firebase flutter dart google-cloud-firestore provider

我正在尝试在tabview容器中显示StreamProviders数据。我在main.dart中使用MultiProvider。我创建了一个database.dart,其中包含我的Future updateuserdata和QuerySnapshot中的List。在我的MultiProvider中,我已将StreamProviders值设置为DatabaseService()<-这是我的“ this.uid”和get命令。我正在尝试显示此信息,但出现很多错误。如果有人可以帮助我,将不胜感激。

我的Main.darts MultiProvider:

class MyApp   extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
        providers: [
      Provider<AuthenticationService>(
    create: (_) => AuthenticationService(FirebaseAuth.instance),
    ),
      StreamProvider(
      create: (context)=> context.read<AuthenticationService>().authStateChanged,
      ),
    StreamProvider<List<ALLegemidler>>.value(
    value: DatabaseService().legemidlerakutt, child: akuttelegemidlerliste()),
  ],
    child: MaterialApp(
     home: AuthenticationWrapper(),

      routes: {
        '/signinpage': (context) => SignInPage(),
        '/signuppage': (context) => SignUpPage(),
        '/home': (context) => HomePage(),
        '/barneanestesi': (context) => BarneAnestesi(),
        '/ahlr_barn': (context) => Ahlr_Barn(),
      }

    ),
    );
  }
}

我的Model.dart

class ALLegemidler  {

  final String navn;
  final String dose;
  final String styrke;
  final String mengde;
  final String hastighet;

  ALLegemidler({this.navn, this.dose, this.hastighet, this.mengde, this.styrke,});


}

我的数据库。dart

class DatabaseService {
final String uid;
DatabaseService ({this.uid});

  // collection reference
final CollectionReference akuttelegemidlerCollection = FirebaseFirestore.instance.collection('legemidlerakutt');

//oppdater akuttlegemiddelliste
Future updateUserDataALegemidler(String alnavn, String aldose, String alstyrke, String almengde, String alhastighet) async {
  return await akuttelegemidlerCollection.doc(uid).set({
    'Navn': alnavn,
    'Dose': aldose,
    'Styrke': alstyrke,
    'Mengde': almengde,
    'Hastighet': alhastighet,
  });
}

// Liste fra akutte legemiddellisten
  List<ALLegemidler> _ALLegemidlerFromSnapshot(QuerySnapshot snapshot) {
  return snapshot.docs.map((doc){
    return ALLegemidler(
      navn: doc.data()['Navn'] ?? '',
      styrke: doc.data()['Styrke'] ?? '',
      dose: doc.data()['Dose'] ?? '',
      mengde: doc.data()['Mengde'] ?? '',
      hastighet: doc.data()['Hastighet'] ?? '',
    );
  });
  }

//get Akutte legemidler collection
Stream<List<ALLegemidler>> get legemidlerakutt{
  return akuttelegemidlerCollection.snapshots()
  .map(_ALLegemidlerFromSnapshot);

}

}

还有我的databaselist.dart

class ALLegemidlerListe extends StatefulWidget {
  @override
  _ALLegemidlerListeState createState() => _ALLegemidlerListeState();
}

class _ALLegemidlerListeState extends State<ALLegemidlerListe> {
  @override
  Widget build(BuildContext context) {
    final ALLegemidler = Provider.of<QuerySnapshot>(context);
    for (var doc in ALLegemidler.docs) {
      print(doc.data);
    }

    return Container();
  }
}

0 个答案:

没有答案