我正在尝试实现 Provider ,它似乎工作正常,但我收到以下消息:
这个 _DefaultInheritedProviderScope 小部件不能被标记为需要构建,因为框架已经在构建小部件的过程中。仅当其祖先之一当前正在构建时,才可以将小部件标记为需要在构建阶段构建。允许此异常是因为框架在子级之前构建父级小部件,这意味着将始终构建脏后代。否则,框架可能不会在此构建阶段访问此小部件。调用 setState() 或 markNeedsBuild() 的小部件是: _DefaultInheritedProviderScope 值:“UserProfile”监听值的实例 进行违规调用时当前正在构建的小部件是:FutureBuilder 脏状态:_FutureBuilderState#bf6ec 当抛出异常,
0 元素.markNeedsBuild。(包:flutter/src/widgets/framework.dart:3896:11)
1 Element.markNeedsBuild(包:flutter/src/widgets/framework.dart:3911:6)
2 _InheritedProviderScopeMixin.markNeedsNotifyDependents (package:provider/src/inherited_provider.dart:268:5)
3 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:206:21)
4 UserProfile.user= (package:mdd/core/services/user_info.dart:13:5) ... UserProfile
发送通知是:“UserProfile”的实例
我的代码如下:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final authService = Provider.of<AuthService>(context);
final userProfile = Provider.of<UserProfile>(context);
return StatefulWrapper(
onInit: () {
FirebaseNotifications().setUpFirebase();
},
child: FutureBuilder<User>(
future: authService.getUser(),
builder: (context, AsyncSnapshot<User> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.error != null) {
return Text(snapshot.error.toString());
}
userProfile.user …Run Code Online (Sandbox Code Playgroud) 我的 Firebase 数据库模型如下所示:
dbRef
|___userId
|____Cars
|____Alfa_Romeo
| |____Year: 1992
| |____Price: 10000
|__________Audi
| |____Year: 1998
| |____Price: 3000
|___________BMW
|____Year: 2001
|____Price: 7000
Run Code Online (Sandbox Code Playgroud)
然后我有一辆 Class Car 看起来像
import 'package:json_annotation/json_annotation.dart';
part 'car.g.dart';
/// An annotation for the code generator to know that this class needs the
/// JSON serialization logic to be generated.
@JsonSerializable()
class Car {
Carta(this.model, this.details);
String model;
List details;
factory Car.fromJson(Map<String, dynamic> json) => _$CarFromJson(json);
Map<String, dynamic> toJson() => _$CarToJson(this);
}
Run Code Online (Sandbox Code Playgroud)
现在,当我将数据设置为 Firebase 时,我得到了这个:
dbRef …Run Code Online (Sandbox Code Playgroud) 我正在使用 Flutter 并且我有一个旧的 Mac Mini,它可以正常工作,但后来 Apple 引入了 Signin with Apple,你不能在旧版本的 Xcode 上构建它,所以我不得不在我几乎不使用的 Macbook Air 上完成它构建应用程序,因为我在台式机上感觉更舒服。
现在,当我更新某些东西时,我必须将它推送到 Github,然后更新项目并在 Mac mini 上构建捆绑包,因为有我用来签署应用程序的证书。
问题是我想卖 Mac mini,我有一个潜在买家,但我不知道如何在 Macbook Air 中导入 .jks。我试着简单地复制它,但它不起作用。任何人都可以帮我解决这个问题吗?
我有这个函数从中获取用户FireBase并将其转换为Dictionary:
let leaderBoardDB = FIRDatabase.database().reference().child("scores1").queryOrderedByValue().queryLimited(toLast: 5)
leaderBoardDB.observe( .value, with: { (snapshot) in
print("scores scores", snapshot)
if let dictionary = snapshot.value as? [String: Any] {
for playa in dictionary {
let player = Player()
print("plaaaaayyyyyaaaaa", playa)
print("plaaaaayyyyyaaaaa key", playa.key)
print("plaaaaayyyyyaaaaa.value", playa.value)
player.id = playa.key
print(playa.key["name"])
}
}
}, withCancel: nil)
}
Run Code Online (Sandbox Code Playgroud)
我得到这个结果:
plaaaaayyyyyaaaaa("inovoID",{name = Tatiana; points = 6;})plaaaaayyyyyaaaaa key inovoID plaaaaayyyyyaaaaa.value {name = Tatiana; points = 6; } aaaa i id可选("inovoID")
问题是我无法获得用户的名称和要点.当我尝试使用:
print(playa.key["name"])
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
无法使用类型为"String"的索引下标"String"类型的值
有谁可以帮我这个,拜托?
我有这个用Swift编写的函数来获取排行榜,然后将其显示给用户:
@IBAction func onShowLeaderboardTapped(_ sender: Any) {
let leaderboardDB = FIRDatabase.database().reference().child("scores").queryOrderedByValue().queryLimited(toLast: 5)
leaderboardDB.observeSingleEvent(of: .value, with: { (snapshot) in
print("leaderboard snapshot:" ,snapshot)
}, withCancel: nil)
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我获取它时,它会给我以下列表:
Ben = 9;
Gabriela = 12;
Ivailo = 7;
Petar = 10;
Vania = 10;
Run Code Online (Sandbox Code Playgroud)
它向我展示了前五个玩家,但随后按字母顺序列出了它们.由于这不是一个大问题,我想知道是否有办法按价值排序.
这些是规则:
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"scores": {
".indexOn": ".value"
}
}
}
Run Code Online (Sandbox Code Playgroud)
数据库的组织如下:
matchrooms:
users:
scores:
> Ben: 9
> Dimitar: 7
> Gabriela: 12
> Ishest: 6
> Ivailo: 7 …Run Code Online (Sandbox Code Playgroud)