我正在构建一个应用程序,显示从 source.unsplash 获取的图像。我的请求网址是:
https://source.unsplash.com/random/`$widthx$height`
Run Code Online (Sandbox Code Playgroud)
然后该服务重定向到一些特定的图像网址,该网址选择适合我的宽度和高度。
我可以使用: 显示图像
Image.network(url above),
但我无法访问代码的其他部分的新重定向网址,这确实是必要的。有办法得到吗?
提前致谢
我正在寻找的东西就像
Http.Response response = await Http.get(url);
print(response.finalRedirectURL);
Run Code Online (Sandbox Code Playgroud) 在显示第一个屏幕之前,我需要加载一个小设置文件。
我目前正在使用 PathProvider 插件,但其中的所有功能都是异步的。
有没有办法同步找到应用程序文档目录,然后在其上使用 dart:io 同步功能?而不是显示秒的无限小数的占位符。
编辑:考虑到前两个答案,可能我的解释真的很糟糕。答案建议我仍然使用async代码。问题是,我需要 before 目录runApp(),但我不希望void main()是 目录async,因为这肯定会破坏任何启动动画。
async据我所知,PathProvider API 是,只是因为它利用MethodChannel了async,但 PathProvider 背后的函数几乎是同步的。
我要问的是 - 在 Android 或 IOS 上有没有办法知道同步代码中的 ApplicationDocumentsDirectory ?也许根本不使用特定于平台的代码?
有效的 dart 指定顶级变量应final在适用时使用:
https: //dart-lang.github.io/linter/lints/prefer_final_fields.html
但是,我找不到有关方法参数的任何信息。
Flutter repo 的代码函数大多是参数未标记的函数final,包括build我见过的所有被重写的方法。
就性能和应用程序重量而言,以下哪一项更好:
@override build(context)
@override build(BuildContext context)
@override build(final BuildContext context)
也许重写函数应该以与超级函数相同的方式定义?build像上面这样可以推断类型的重写函数和其他命名/未命名函数(除了不设置类型使变量动态化之外)之间有什么区别吗,Flutter repo 也是这样写的:
static double _flingDistancePenetration(double t) { // t is not final, although treated as immutable
return (1.2 * t * t * t) - (3.27 * t * t) + (_initialVelocityPenetration * t);
}
Run Code Online (Sandbox Code Playgroud)
我见过这个关于Java的问题:Why would one mark local Variables and methodparameters as "final" in Java? ,而且,虽然我同意最重要的答案,但我完全不知道为什么 Flutter repo 不这样做。
许多公共示例代码,pub插件代码包括带有实例的类和状态,这些实例以下划线作为前缀命名。什么事啊 这种时尚来自哪里?它是Dart中流行的编程模式,还是只是出于品味?:D
class State extends State<widget>{
int _index = 1;
_increment() => _index++;
}
Run Code Online (Sandbox Code Playgroud)