问题:我想创建 Rxjs 组合(函数链),这将导致缓冲来自一个 Observable 的值,直到发生特定事件,然后同步发出所有缓冲值,然后缓冲直到下一个事件。
我使用这个函数来收集所有必须等到我的应用程序调用授权的 http 请求。然后运行所有这些请求。(它在 Angular4 HttpClient Interceptor 中实现),这就是我的用例,但我通常会寻求有关如何创建此类 rx 链的解决方案。
为什么 Rxjs 缓冲区不够用。从我读取和测试的缓冲区要么需要确切的时间范围,要么在获取调度程序而不是时间作为参数的情况下,它在检测到最后一个调度程序的“事件”传播后重新订阅调度程序。我希望它是这样工作的:当出现第一个请求时,我开始缓冲然后订阅调度程序,在调度程序发出后,停止缓冲,重新发送所有缓冲的值,并等待下一个新请求再次开始缓冲和再次启动调度程序。
现在我的解决方案是使用未定义或我的可观察的辅助对象,代码大致如下:
private observable: Observable<boolean>;
makeRequest(): Observable<boolean> {
if (this.observable !== void 0) {
return this.observable;
} else {
this.observable = this.authenticationReuqest()
.share()
.finally(() => this.observable = void 0);
return this.observable;
}
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我有点缓冲我的请求,通过 maiking 它们 .delay() 直到相同的多播可观察对象发出,然后在它发出后我就清理它(尽管不需要取消订阅,因为它最终会在完成或出错后清理) .
如果有人知道如何用纯 Rxjs 替换这个解决方案,我很感兴趣。我有一些感觉,虽然我无法得到确切的解决方案,但 Buffer 和 Zip 的某种组合可以使它发生。
谢谢托马斯
我已经更新了 pedantic 包并最终解决了 1K+ 问题。其中许多是prefer_single_quotes 或不必要的等等。它们只需单击一下即可修复。我认为 eslint 或其他一些工具可以在 VSCode 中做到这一点。
有没有办法用 Flutter 项目做到这一点?我找到了 dartfix 包,但在运行后说“没有推荐的更改”。我想要做的是修复问题选项卡上的所有可自动修复的问题。
我目前正在构建一个播客应用程序,我想要实现的是类似于 Spotify 中的迷你播放器的东西。
当用户点击播客并开始收听时,我想打开一个迷你播放器并使其在所有页面上活跃。
我首先想到的是使用 Overlay 小部件或为所有页面使用自定义导航器并将该导航器放入堆栈中。我想知道以前是否有人实施过类似的事情,或者解决这个问题的最佳方法是什么。
我的印象是,这GoogleServices-Info.plist不再是强制性的,因为 FlutterFire CLI 很好地将配置文件放在 dart 代码上,例如firebase_options_flavor1.dart
应用程序可以在没有 GoogleServices-Info.plist 的情况下运行,但在添加 Firebase Messaging 后,如果没有此文件,它就会开始崩溃。
我的问题是:
Github 上的一些相关消息。准确描述我的问题的评论:https://github.com/firebase/flutterfire/issues/8119#issuecomment-1048738598
dart 初始化崩溃并发出通知的问题:https ://github.com/firebase/flutterfire/issues/7752
评论仅 dart 初始化不起作用的地方:https://github.com/firebase/flutterfire/issues/8119#issuecomment-1047823455
根据this SO answer,我正在尝试将我的更多选项按钮与我专栏中的右上角对齐。
这是我的代码。
return Card(
color: Colors.blueAccent,
child: Container(
height: 100,
width: 350,
child: Column(
children: <Widget>[
Text(
'Day ${widget._dayNumber}',
style: TextStyle(
color: Colors.white,
),
),
Align(alignment: Alignment.topRight,
child: IconButton(onPressed: () {}, icon: Icon(Icons.more_vert),)),
],
),
),
);
Run Code Online (Sandbox Code Playgroud)
如果我更改对齐和文本的顺序,就会发生这种情况。
我想在右上角显示我的按钮,同时将 Text 小部件保持在中心顶部,但 align 小部件似乎占据整行(行)。
有没有办法正确实现这一目标,或者我是否需要将它们排成一行?
我想知道这两种方法有什么区别。我认为toStringAsFixed修剪了数字,但从文档中的示例来看,两者都对数字进行了四舍五入。
我遇到了与此处概述的相同问题。我已经尝试了所有提供的解决方案,但仍然收到错误消息“RenderFlex 被底部 x 像素溢出”。我在自定义ListView Builder下没有任何小部件。我真的很茫然。
Widget build(BuildContext context) {
return new Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
new GradientAppBar("Twitter"),
new Container(
child: Flexible(
child: Column(
children: <Widget>[
Container(
padding: const EdgeInsets.only(top: 10.0, left: 10.0),
child: UserInfoHeader(userinfo)
),
PagewiseListView(
shrinkWrap: true,
scrollDirection: Axis.vertical,
physics: const AlwaysScrollableScrollPhysics(),
pageSize: 200,
itemBuilder: (context, TwitterCardContent entry, _) {
return TwitterCard(entry);
},
pageFuture: (pageIndex) {
return getStatuses(userinfo.screenName);
},
)
],
),
),
),
],
);
Run Code Online (Sandbox Code Playgroud)
}
这是每个 List 项目的内容。
Widget build(BuildContext …Run Code Online (Sandbox Code Playgroud) W / GooglePlayServicesUtil(8660):Google Play服务已过期。需要13400000但找到了13280022
我正在尝试在Nexus S和Pixel Phone模拟器上的google_maps_plugin存储库中运行示例应用程序,它们均在Android Pie上运行。
有问题,而不是颤抖的一面。我未能应用他们的解决方案。
到目前为止我做了什么
1)我的模拟器中没有此选项 /sf/answers/3171894771/
2)这是在flutter标签上,但是解决方案是一个依赖项修复 /sf/answers/3778754871/
3)我不清楚如何在过时的Gradle Google Play服务中将Google Play服务降级。需要10298000但找到10084470
4)尝试使用模拟器从此链接下载播放服务,但是由于我没有playstore应用,因此无法将我的帐户与其关联,https://play.google.com/store/apps/details? id = com.google.android.gms
此Google帐户尚未与设备关联。请先在设备上访问Play商店应用,然后再安装应用。
如何删除颤动栏上的标题栏?
displayMap() {
mapView.show(new MapOptions(
mapViewType: MapViewType.normal,
initialCameraPosition:
new CameraPosition(new Location(11.052992, 106.681612), 3.0),
showUserLocation: false,
title: 'Google Map'));
.....
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加Container(height: 0.0)和删除,title: 'Google Map'但它只删除了“谷歌地图”文本。
编辑:
我的 Scaffold
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Demo App'),
),
body: new Center(
child: Container(
child: RaisedButton(
child: Text('Touch'),
color: Colors.blue,
textColor: Colors.white,
elevation: 7.0,
onPressed: displayMap,
),
),
),
);
}
Run Code Online (Sandbox Code Playgroud) 我有一个国家代码(DropdownMenu)和电话(TextFormField),我如何将它们放在同一级别?我试过 Align 小部件。
Row(
children: <Widget>[
Flexible(
flex: 1,
child: DropdownButtonFormField(
value: _selectedCountryCode ?? 'TR',
onChanged: (value) {
setState(() {
_selectedCountryCode = value;
});
},
items: countryCodes,
),
),
Flexible(
flex: 4,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: TextFormField(
decoration: InputDecoration(labelText: "Phone"),
),
),
),
],
),
Run Code Online (Sandbox Code Playgroud)