我正在开发一个Flutter应用程序,但想知道从UI调用异步代码时我该怎么办 - 让我们说一下UI小部件的构建方法.
例如,我的应用通过服务类连接Firebase,该服务类使用Async-Await样式从Firebase获取记录.使用await确保我的服务类的方法将在返回UI端之前完成记录检索.
但是,由于服务类的方法被标记为异步,因此在服务类的方法完成之前,它会立即向调用UI小部件返回Future,并且UI代码将继续运行.
是的我可以为"then()"回调编写代码来处理检索到的记录,但是后面的小部件中的其他代码又取决于异步调用的结果呢?这是否意味着我需要在"then()"子句中嵌入所有内容,并避免在返回Future的方法调用之后添加任何执行步骤?这种使用模式的任何建议模式?
@override
Widget build(BuildContext context) {
RealtimeDatabase.getData() // my service class
.then((onValue) {
..... // do something after the async call is completed
}
..... // do something immediately before the async call is done
class RealtimeDatabase {
Future<String> getData() async {
DataSnapshot dataSnapshot = await FirebaseDatabase.instance.reference().orderByKey().once(); // will wait until completed
.....
.....
Run Code Online (Sandbox Code Playgroud)
很抱歉,如果我的描述不清楚,欢迎任何建议.
吉米
我正在开发 Ionic 的移动应用程序并被错误卡住
TypeError: t.getCases(...).then 不是函数
以下是我的控制器和服务:
starter.services.factory('appData', function() {
return {
getCases: function() {
var cases =[
{case_id: 1, description: 'headache'},
{case_id: 2, description: 'fever'},
{case_id: 3, description: 'stomachache'}
];
return cases;
}
}
})
Run Code Online (Sandbox Code Playgroud)
starter.controllers.controller('mainViewCtrl', function($scope, appData) {
appData.getCases().then(function(data){
$scope.cases = data.cases;
});
console.log("mainViewCtrl completed");
})
Run Code Online (Sandbox Code Playgroud)
请注意,在构建包文件之前,我运行 gulp 脚本来合并和“丑化”所有 JS 文件。
任何帮助将非常感激。
我正在制作Flutter应用,并设法展示了AdMob横幅广告,但是该广告与应用主屏幕的底部重叠:
通过遵循本文,我设法使应用程序屏幕的底部正确显示,但是牺牲了persistentFooterButtons,我认为这不是理想的解决方案。

我正在考虑将脚手架对象和固定高度区域放入Center对象所包含的列中,类似于以下内容:
@override
Widget build(BuildContext context) {
return new Center(
child: new Column (
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
new Expanded (
child: _getScaffold(),
),
new Expanded (
child: new Container(height: 50.0,)
)
],
),
);
}
Run Code Online (Sandbox Code Playgroud)
但是通过这种方式,我得到了异常“ RenderFlex底部溢出228个像素 ”:
谁能告诉我如何建立这样的布局?我希望脚手架的每个组件都能正确显示,并且固定高度的虚拟页脚可以与Admob的横幅广告重叠。
任何帮助都非常欢迎。
吉米
同时,我正在使用 Firebase 开发 Flutter 应用程序,这确实很有趣,当然还有一些麻烦需要克服......
我设置了一个 Firebase 数据存储,并通过 firebase_database 插件我得到了一个 DataSnapshot,返回如下:
FirebaseDatabase.instance.reference().child('users')
.orderByChild('emailAddress')
.equalTo('wonderjimmy@gmail.com').once()
.then((onValue) {
Map data = onValue.value;
});
Run Code Online (Sandbox Code Playgroud)
我使用 Map 对象来保存这个 JSON。一个愚蠢的问题:如果我只想获取值“ -L474-TYYYGPvCChlZCS ”,我该怎么办?
dart ×3
flutter ×3
admob ×1
async-await ×1
cordova ×1
firebase ×1
ionic ×1
javascript ×1
json ×1