小编Che*_*ong的帖子

为什么(通常)在 BLoC 模式上有一个存储库层?

我是 Flutter 的新手,刚刚从阅读有关 Flutter 的教程中听说了 BLoC 概念。从本教程中,我第一次听说 BLoC。但是我在这篇文章中也看到了一个名为“Repository”的文件。基本上数据流是这样的:

Web API --> Api Provider --> Repository --> BLoC --> Widget
Run Code Online (Sandbox Code Playgroud)

我不明白的是,为什么需要 Repository 层,因为当我查看存储库文件时,它基本上只是返回 API Provider 的 Future 结果?我很好奇并尝试进一步搜索,我看到互联网上一些人的编码模式也有一个 Repository 层。

在原始文章中,API Provider 做了一切。它调用 get 请求,等待 Future 解析,将 JSON 数据转换为适当的模型,并返回用 Future 括起来的模型。

class ApiProvider {
  Future<ItemModel> fetchMovieList() async {
    final response = await client.get("http://api.themoviedb.org/3/movie/popular?api_key=$_apiKey");
    if (response.statusCode == 200)
      return ItemModel.fromJson(json.decode(response.body));
    else
      throw Exception('Failed to load post');
  }
}

class Repository {
  ApiProvider _api = ApiProvider();

  Future<ItemModel> fetchMovieList() => _api.fetchMovieList(); // …
Run Code Online (Sandbox Code Playgroud)

flutter

6
推荐指数
2
解决办法
1012
查看次数

在 Flutter 中,如何一次性设置“所有”脚手架背景颜色?

目前,我使用以下方法设置每个屏幕的背景颜色:

  @override
  Widget build(BuildContext context) => Scaffold(
    backgroundColor: Colors.white,
    body: ...
  );
Run Code Online (Sandbox Code Playgroud)

每次创建新屏幕时,我总是忘记添加这个背景颜色设置器。这是一个小小的不便,但我真的很感激如果有一种方法可以为所有屏幕设置一次背景颜色,除非被backgroundColor特定的属性覆盖Scaffold。我尝试在MaterialAppcolor属性上设置颜色,但看起来没有任何效果。

scaffold flutter

6
推荐指数
1
解决办法
3336
查看次数

关于在Amazon AWS上格式化新的EBS卷

我没有太多使用Linux和安装/卸载东西的经验.我正在使用亚马逊AWS,使用Ubuntu映像启动EC2,并将新的EBS卷附加到EC2.从仪表板中,我可以看到卷已连接到:/dev/sda1.

现在,我从亚马逊的这个指南中看到,内核可能会改变路径.所以我的/dev/sda1设备最有可能安装在,也许是/dev/xvda1.

所以我使用终端登录.我ls /dev/确实xvda1在那里看到了.但我也看到了xvda.现在我想格式化设备.但我不知道未格式化的设备是否附加到xvda1xvda.我无法列出/dev/xvda1/dev/xvda(它说ls: cannot access /dev/xvda1/: Not a directory)的内容.我想我必须先格式化它.

我试着用格式化sudo mkfs.ext4 /dev/xvda1.它说:/dev/xvda1 is mounted; will not make a filesystem here!.

我试着用格式化sudo mkfs.ext4 /dev/xvda.它说:/dev/xvda is apparently in use by the system; will not make a filesystem here!

如何格式化音量?

编辑:

lsblk命令的结果:

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda …
Run Code Online (Sandbox Code Playgroud)

linux amazon-ec2 amazon-web-services

5
推荐指数
1
解决办法
2703
查看次数

如何以模态方式呈现ViewController,然后在ViewController被解除后运行一个回调函数/块,没有Delegate?

我只知道self.presentViewController(childVc, animated: true, completion: {})在子视图控制器完成动画显示在屏幕后调用完成块.我实际上想要运行一个代码块,在子视图控制器的动画完成动画被解除后显示.我怎么能这样做,最好避免使用委托来做那件事?

编辑:我从这样的呈现(子)视图控制器调用这个:self.presentingViewController.dismissViewControllerAnimated (true) {},但问题是子视图控制器可以从任意页面呈现,并且在子项被解除后,父(呈现)视图控制器必须做不同的的东西.如果我在孩子中实现回调,我不能对调用它的不同父母做不同的事情.

例如,如果我在新闻屏幕中将登录表单作为模式调用,则在登录表单解除后,我想在之后显示评论部分.但是如果从产品屏幕以模态方式显示登录表单,我希望之后在购物车中显示用户的购物车.如果没有代表就不可能做到这一点,我仍然对委托解决方案感兴趣.

modal-dialog uiviewcontroller ios swift

5
推荐指数
1
解决办法
4601
查看次数

如何将音频文件保存在浏览器的缓存中,以便当用户按下按钮时,音频立即从缓存中开始播放?

我有一个简短的音频文件集合,我想在用户按下相应按钮时播放一个音频文件。我有以下脚本可以播放声音:

<script type="text/javascript">
    var sound = new Audio();
    function playSound(audioUrl) {
        sound.src = audioUrl;
        sound.play();
    }
</script>

<button type="button" onclick="playSound('http://example.com/audioA.mp3')">Audio A</button>
<button type="button" onclick="playSound('http://example.com/audioB.mp3')">Audio B</button>
<button type="button" onclick="playSound('http://example.com/audioC.mp3')">Audio C</button>
...
Run Code Online (Sandbox Code Playgroud)

问题是,这些音频文件不大,但是在第一次按下按钮时仍需要短暂的延迟才能下载和播放,这有点烦人。如何命令浏览器在页面加载时缓存所有音频文件?当我搜索此内容时,我发现有关缓冲和流音频的内容可能不适合我的需求,因为我的音频长度不那么长。谢谢。

javascript audio caching

5
推荐指数
1
解决办法
2683
查看次数

为什么 gradlew assembleDebug 不运行 jetifier,而 react-native run-android 运行 jetifier?

我给自己定android.useAndroidX = trueandroid.enableJetifier = true上gradle.properties。但是当我跑步时,react-native run-android我看到:

info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 1902 file(s) to forward-jetify. Using 4 workers...
Run Code Online (Sandbox Code Playgroud)

但是当我将 dir 更改为 android dir 并运行时./gradlew assembleDebug,我没有看到这样的事情。因此,我的构建在所有android.support.*导入库的地方都会中断。

> Task :react-native-app-auth:compileDebugJavaWithJavac FAILED
.../node_modules/react-native-app-auth/android/src/main/java/com/rnappauth/
RNAppAuthModule.java:10: error: package android.support.annotation does not exist
import android.support.annotation.Nullable;
                                 ^
.../node_modules/react-native-app-auth/android/src/main/java/com/rnappauth/RNAppAuthModule.java:11: error: cannot find symbol
import android.support.customtabs.CustomTabsCallback;
                                 ^
  symbol:   class CustomTabsCallback
  location: package android.support.customtabs
.../node_modules/react-native-app-auth/android/src/main/java/com/rnappauth/RNAppAuthModule.java:12: error: cannot find …
Run Code Online (Sandbox Code Playgroud)

android gradlew react-native android-jetifier

5
推荐指数
2
解决办法
743
查看次数

如何使用JavaScript检查资源的可用性?

如果我有一个视频文件的URL,如何检测URL指向的资源是否有效并且在显示之前是否存在?我已经看到一些建议AJAX的答案,但我只知道AJAX发送和检索一些数据,而不是获取文件的状态是否存在.

例如,如果我有一个类似的URL http://www.example.com/video.mp4,我怎么能检查是否video.mp4存在并且可以检索还是不能检索?

javascript ajax

4
推荐指数
1
解决办法
3350
查看次数

测试curl的连接超时状态

我想测试我的curl命令是否真的返回“连接超时”状态。因此,我想尝试运行curl --connect-timeout 1连接到任何需要超过1秒响应才能让curl超时的网站。但是在尝试了很多网站之后,我仍然无法获得连接超时状态(因为他们响应太快了?)。您建议我如何实现这一目标?

linux curl

4
推荐指数
1
解决办法
6308
查看次数

swift 中的 struct 和 typealias 有什么区别?

我想要一个包含一个字符串和一个整数的数组。有什么区别:

struct People { var name: String!; var age: Int! };
var data = Array<People>();
data.append (People(name: "John Doe", age: 31));
Run Code Online (Sandbox Code Playgroud)

和:

typealias People = (name: String!, age: Int!);
var data = Array<People>();
data.append ((name: "John Doe", age: 31));
Run Code Online (Sandbox Code Playgroud)

除此之外的一切。我的意思是,在从 struct 切换到 typealias 时,访问数据、内存管理、指针问题或其他我应该警惕的东西有什么区别吗?我通常使用 struct,但后来我发现我有 typealias 作为替代。我只是想确定哪一种更适合我的日常使用。注意:我注意到 struct 很像 class,因为您可以在其中添加方法。但是对于这样的事情,我通常直接使用类。

struct type-alias swift

4
推荐指数
1
解决办法
1468
查看次数

如何安全地将UITableView滚动到一行*?

有时当我试图将tableview滚动到一行时,我可能会意外地提供一个不存在的部分/行.然后应用程序将崩溃.

self.tableView.scrollToRow(at: IndexPath(row: targetRow, section: targetSection), at: UITableViewScrollPosition.bottom, animated: true);
Run Code Online (Sandbox Code Playgroud)

如何使这个滚动过程崩溃安全?我的意思是,如果我提供不存在的部分/行,我希望UITableView只是忽略它.或者如何在滚动之前检查UITableView中是否存在节/行?谢谢.

uitableview ios swift

4
推荐指数
2
解决办法
756
查看次数