【发布时间】:2021-12-20 00:09:26
【问题描述】:
我正在尝试从 Flutter 中的实时数据库 Firebase 中获取数据以用于 Web 应用程序。所以,我尝试了几种方法,但无法使其工作。这些是我目前用于从实时数据库中检索数据的代码。
我正在尝试将数据提取到列表视图中。
import 'dart:convert';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_database/firebase_database.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;
import 'package:nasofficialproject/Modals/PostsModals.dart';
import 'package:nasofficialproject/Provider/Upin.dart';
import 'package:provider/provider.dart';
class DashboardPage extends StatefulWidget {
const DashboardPage({Key key}) : super(key: key);
@override
_DashboardPageState createState() => _DashboardPageState();
}
class _DashboardPageState extends State<DashboardPage> {
final fb = FirebaseDatabase.instance;
List<PostModels> postmodal = [];
final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
var pro;
@override
void initState() {
super.initState();
pro = Provider.of<upin>(context, listen: false);
getPostList();
}
Future<void> getPostList() async {
final values = await http.get(Uri.parse(
'https://officialnasproject-default-rtdb.firebaseio.com/Schools/${pro.upin1}/School-Posts.json'));
var val = json.decode(values.body) as Map<String, dynamic>;
val.forEach((key, value) {
PostModels postModels = new PostModels(
value['PostContent'],
value['PostUserName'],
value['PostDate'],
value['PostUserRole'],
value['PostTitle'],
value['PostUploader'],
value['Upin'],
);
postmodal.add(postModels);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Flexible(
child: postmodal.length == 0 ? Center(
child: SelectableText("No posts yet....", style: TextStyle(fontSize: 20),),) :
ListView.builder(
itemCount: postmodal.length,
itemBuilder: (_, index) {
return CardUI(
postmodal[index].PostContent,
postmodal[index].PostUserName,
postmodal[index].PostDate,
postmodal[index].PostUserRole,
postmodal[index].PostTitle,
postmodal[index].PostUploader,
postmodal[index].Upin,
);
}),
),
),
);
}
Widget CardUI(String PostContent, String PostUserName, String PostDate, String PostUserRole, String PostTitle, String PostUploader, String Upin)
{
return Card(
child: Container(
child: Column(
children: <Widget> [
Text(PostUserName,),
Text('@'+PostUserRole,),
Text(PostTitle,),
Text(PostContent),
],
),
),
);
}
}
这些是我用于获取和显示数据的代码,但我不知道它为什么不起作用。有人可以帮助我吗,这对我来说意义重大,因为我正在尝试连续四天解决这个问题,但还没有解决。
【问题讨论】:
标签: flutter http dart firebase-realtime-database web-applications