flutter - 为什么 Provider.of 上的“上下文”有错误?
问题描述
我希望寻求您的帮助以解决语法错误。“上下文”中显示错误,如下所示。
但是,完全相同的代码在嵌入到另一个文件的类中时没有错误。
预先感谢您的帮助。
从Firebase.dart 读取
Future readFromFirebase() async {
Carpark thisCarpark;
// await FirebaseFirestore.instance
await FirebaseFirestore.instance
.collection('carpark')
.get()
.then((QuerySnapshot snapshot) {
snapshot.docs.forEach(
(DocumentSnapshot cp) {
thisCarpark = Carpark(
cp.get('name'),
cp.get('district'),
);
Provider.of<CarparksProvider>(context, listen: false)
.addCarpark(thisCarpark);
},
);
});
var carparkList =
Provider.of<CarparksProvider>(context, listen: false).carparks;
return carparkList;
}
carparks_provider.dart
import 'package:flutter/material.dart';
import 'carpark.dart';
class CarparksProvider extends ChangeNotifier {
List<Carpark> _carparks = [];
List<Carpark> get carparks => _carparks;
void addCarpark(Carpark carpark) {
_carparks.add(carpark);
notifyListeners();
}
}
parkFee_screen.dart
import 'package:carpark_v012/services/carpark.dart';
....
class ParkingFeeScreen extends StatefulWidget {
@override
_ParkingFeeScreen createState() => _ParkingFeeScreen();
}
class _ParkingFeeScreen extends State<ParkingFeeScreen> {
List<Carpark> carparkList = []; //List for storing carparks
void initState() {
super.initState();
}
Future readFromFirebase() async {
Carpark thisCarpark;
......
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: .........
body: FutureBuilder(
future: readFromFirebase(context),
builder: (BuildContext context, AsyncSnapshot snapshot) {
print(snapshot.data);
.........
解决方案
像这样传递BuildContext
给这个方法
Future readFromFirebase(BuildContext context) async {
在调用此函数时,将上下文传递给那里。
它在你的情况下解决了吗?
推荐阅读
- python - Flask 部署 VPS Apache
- python - 将大字符串转换为数据框
- javascript - 关于 React.js 和 Material_ui 中的无限滚动
- android - Androidx 中的卡片视图
- .net - 无法从我的 Mac 发布我的 Web 窗体项目 (ASP.NET)
- c - 为什么 .h 文件中定义的函数在 .c 文件中重新定义?
- archlinux - 如何更改在无吸dwm中按住键的反应时间和打字速度?
- sql - TSQL UDF 根据第一个函数参数的值返回具有不同列数的表
- java - Maven 命令 mvn 从终端运行没有错误,但从 python 运行没有错误
- c# - 简单注入器:注册集合时无法在构造函数中注册泛型类型