我做了一个android工作室更新并更新了颤振,现在IDE陷入索引循环.在底部中心,它不断闪烁"更新索引......",我的项目projectName.iml文件在文件图标和带有绿点图标的文件夹之间不断闪烁.此外,每个文件错误指示灯在绿色检查与眼睛图标之间闪烁.
我已经使缓存无效并重新启动了几次,每个扑动项目都有同样的问题.更新完成后,我得到了一个颤振通知,内容如下:
Flutter模块类型更新
从'WEB_MODULE'转换为'JAVA_MODULE'
我能够继续在项目上工作并在模拟器中启动应用程序而没有任何问题,只是分散了屏幕上不断闪烁的注意力.有其他人遇到这个问题并找到了解决方案吗?
Flutter插件: 版本:23.0.2
Flutter SDK版本: Flutter 0.2.3•渠道测试版• https://github.com/flutter/flutter.git框架•修订版5a58b36e36(2周前)•2018-03-13 13:20:13 -0700引擎•修订版e61bb9ac3a工具•Dart 2.0.0-dev.35.flutter-290c576264
Dart插件: 版本:173.4700
Dart SDK:
路径:〜/ dev_mobile/flutterSDK/flutter/bin/cache/dart-sdk
版本:2.0.0-edge.***cc5fe0
Coverage插件: 版本:173.4301.25
我在试图就如何,何时何地从用户处理上传文件的一个决策的过程。我们正处在一个微服务环境(PHP + Linux)的新系统,以在未来数月进行部署。一个关键组成部分是传入文件。
目前,据我所知,有3个选项(也许我还不知道更多)。它们如下:
(1)
[CLIENT:file] ->
[GATEWAY API
FILE STORAGE HANDLER ->
[a: MICROSERVICE-News]
[b: MICROSERVICE-Authors]
[c: MICROSERVICE-Logger]
] -> {response}`
Run Code Online (Sandbox Code Playgroud)
在这种情况下,网关API旨在处理直接与存储服务(S3,GCS)的对话,设置文件名,进行验证等。收到存储确认后,然后根据需要将该文件名和其他数据传递给其他MicroServices 。我认为这是因为该文件一旦它收到并没有别的进一步影响任何向下行可能无法处理是整体有利。但是,它的确增加了网关的复杂性,并可能在高峰时间使速度变慢。
(2)
[CLIENT:file] ->
[GATEWAY API
[a: MICROSERVICE-Files]
[b: MICROSERVICE-News]
[c: MICROSERVICE-Authors]
[d: MICROSERVICE-Logger]
] -> {response}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,该文件由网关API接收,然后必须将其传递给文件MicroService。这可能是有益的,因为它使可见性远离网关,并提供了轻松在服务内部进行更改而不会影响网关的灵活性。这样做的主要缺点是,单个文件现在要处理两次,并且需要计算其他资源。
(3)
[CLIENT:file] ->
[FILE API] -> {response} ->
[CLIENT] ->
[GATEWAY API
[a: MICROSERVICE-News]
[b: MICROSERVICE-Authors]
[c: MICROSERVICE-Logger]
] -> {response}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,客户端负责将文件发送到单独的服务,并使用响应将其发送到网关API。从资源的角度来看,这减轻了网关API的负担,并使其仅关注数据,而不关注文件。这样做的主要缺点是客户端可以向网关API发送错误或恶意的信息,并且需要其他验证以确保文件有效并存在。将来还会在服务和客户之间造成潜在的一致性问题。
我可能会错过其他选择,很想知道是否有。有人对此有经验吗?您如何解决或采用MicroService体系结构处理文件?
我试图找出哪个是存储系统上每个用户的个人用户日志信息和一般元分析数据的最佳选择。
最初的想法是拥有一个“分析器”集合,每个文档代表一个用户。这种设计的问题在于,高级用户可能会在一年或更短的时间内积累大量元数据和历史记录,以致超出文档大小限制。它还会迫使文档具有更深、更复杂的结构,这可能会导致查询速度变慢。
另一种设计思想是为每个用户创建一个集合,每个文档将保存特定类型的分析、历史数据。这样做有几个好处,即速度。然而,当需要与其他用户进行比较时,也会带来查询挑战(可通过其他跟踪数据库解决)。对于单个 mongo 数据库包含多少个集合的问题,我找不到明确的答案。
如果它可以处理每个数据库数以百万计的集合,那就太棒了,否则我需要找到更好的选择来对这些数据进行建模。我以正确的方式处理这件事吗?
目标是维护用户交互的历史记录、声誉跟踪、他们随时间的兴趣、他们经常使用的功能等,这可以提供更丰富的体验。
我一直在寻找如何使用颤振应用程序实现 firebase 功能。似乎没有可用的 SDK(还)。我也尝试将 gradle 依赖项添加implementation 'com.google.firebase:firebase-functions:15.0.0'到我的,app/build.gradle但这会导致构建错误。
有没有人做过有效的实现?我找不到有关如何处理凭据和数据传输以构建我自己的 Firebase 函数调用的任何文档。
我已经创建了一个粗略的轮廓,说明我认为这是如何工作的,但可能有偏差。
Future<dynamic> updateProfile(String uid, AccountMasterViewModel avm) async {
Uri uri = Uri.parse(finalizeProfileFunctionURL);
var httpClient = new HttpClient();
String _result = '';
try {
return await httpClient
.postUrl(uri)
.then((HttpClientRequest request) {
return request.close();
// authentication??
// Fields and data??
})
.then((HttpClientResponse response) async {
print(response.transform(new Utf8Codec().decoder).join());
if (response.statusCode == HttpStatus.OK) {
String json = await response.transform(new Utf8Codec().decoder).join();
_result = jsonDecode(json);
// Do some work
return json;
} …Run Code Online (Sandbox Code Playgroud) 我已经在这个问题上工作了一段时间,但似乎无法弄清楚问题到底是什么。在Dart(2)中,json.encode()似乎并没有给我我想要的结果。
我传递的Map<String, dynamic>是这样的:
_data = <String, dynamic>{
'uid': newProfileCreationModel.accountID,
'displayName': newProfileCreationModel.profileName,
'greeting': newProfileCreationModel.profileBody ?? '',
'avatarSrc': newProfileCreationModel.avatarSrc,
'heroSrc': newProfileCreationModel.heroSrc,
'accountType': newProfileCreationModel.accountType,
'cityID': newProfileCreationModel.cityID,
'cityName': newProfileCreationModel.cityName,
'country': newProfileCreationModel.countryCode,
'state': newProfileCreationModel.stateAbv,
};
Run Code Online (Sandbox Code Playgroud)
并将其转换为JSON
final String _jsonData = json.encode(_data);
Run Code Online (Sandbox Code Playgroud)
然后,我通过以下方式将其发送到Google Cloud函数。
final Uri _uri = Uri.parse(functionUrl);
final String _jsonData = json.encode(_data);
final String _userToken = await AuthenticationService.getUserToken();
HttpClient client = new HttpClient();
HttpClientRequest request = await client.postUrl(_uri);
request.headers.set('Authorization', 'Bearer ' + _userToken);
request.headers.set('Content-Type', 'application/json; charset=utf-8');
print('Encoded: ' + _jsonData); …Run Code Online (Sandbox Code Playgroud)