我刚刚实现了 Flutter包cached_network_image,我想知道如何预加载图像,以便稍后可以立即使用它们。我从我们的服务器检索稍后将使用的所有图像网址。
我已经定义了自定义缓存管理器 getter:
class LocalCacheManager {
static const key = 'customCacheKey';
static CacheManager instance = CacheManager(
Config(
key,
stalePeriod: const Duration(days: 14),
maxNrOfCacheObjects: 200,
repo: JsonCacheInfoRepository(databaseName: key),
fileSystem: LocalCacheFileSystem(key),
fileService: HttpFileService(),
),
);
}
Run Code Online (Sandbox Code Playgroud)
以下是我目前尝试预加载图像的方法:
LocalCacheManager.instance.downloadFile(MY_IMAGE_URL)),
Run Code Online (Sandbox Code Playgroud)
这是我创建小部件的方法:
child: CachedNetworkImage(imageUrl: MY_IMAGE_URL, cacheManager: LocalCacheManager.instance),
Run Code Online (Sandbox Code Playgroud)
但我可以清楚地看到,一旦创建 CachedNetworkImage,文件总是会再次缓存。
我的项目中有两个不同的流程。
从C页到A页,我使用了这段代码,效果很好。
Navigator.popUntil(context, ModalRoute.withName(AssetMenu.ROUTE));
Run Code Online (Sandbox Code Playgroud)
主页 -> 页面 B -> 页面 C -> 单击页面 C 中的按钮后返回页面 A。
但是当点击C页的按钮时,却显示黑屏。
我应该如何处理这个问题?
我能够成功进行 google 登录,当我将令牌传递给 firebase 时,它会返回:
W/System (20511): Ignoring header X-Firebase-Locale because its value was null.
I/flutter (20511): [firebase_auth/unknown] com.google.firebase.FirebaseException: An internal error has occurred. [ CONFIGURATION_NOT_FOUND ]
Run Code Online (Sandbox Code Playgroud)
我的 json 文件非常好。我实施:
final _auth = FirebaseAuth.instance;
String email;
String password;
RoundButton(
title: 'register',
color: Colors.blueAccent,
onPressed: () async {
try {
final newUser = await _auth.createUserWithEmailAndPassword(
email: email, password: password);
if (newUser != null) {
Navigator.pushNamed(context, ChatScreen.id);
}
} catch (e) {
print(e);
}
})
Run Code Online (Sandbox Code Playgroud) 我需要带有两部分的圆角圆圈图标,具有不同的颜色。
我尝试使用 ShadeMask 我的尝试似乎非常失败。
注意:我不需要渐变,只需一部分是一种颜色,另一部分是另一种颜色
class HalfFilledIcon extends StatelessWidget {
HalfFilledIcon(
this.icon,
this.size,
this.gradient,
);
final IconData icon;
final double size;
final Gradient gradient;
@override
Widget build(BuildContext context) {
return ShaderMask(
child: SizedBox(
width: size,
height: size,
child: Icon(
icon,
size: size,
color: Colors.grey[300],
),
),
shaderCallback: (Rect bounds) {
final Rect rect = Rect.fromLTRB(0, 0, size / 2, 0);
return gradient.createShader(rect);
},
);
}
}
Run Code Online (Sandbox Code Playgroud) 执行失败:
任务 ':app:compressDebugAssets'。> 执行 com.android.build.gradle.internal.tasks.CompressAssetsWorkAction 时发生故障 > \app\build\intermediates\merged_assets\debug\out
我想检查用户是否在其设备上设置了任何类型的屏幕锁定(PIN、指纹、面部、图案等)。
我不想简单地检查设备是否能够进行生物识别等功能,也不想(从后台)检测设备当前是否已锁定。我想知道用户是否为他们的设备配置了任何类型的锁定机制。
到目前为止我遇到的所有资源和代码片段似乎都集中在
我想简单地检查设备是否配置了任何类型的锁定并需要解锁手机。如果没有,我想在我的应用程序中隐藏一些敏感信息。
有没有办法在 Android 和 iOS 上都做到这一点?
DateTime.parse 创建的 DateTime 似乎总是为“timeZoneOffset”返回 0
我在非 UTC 时区中创建了一个 ISO8601 字符串:https://timestampgenerator.com/1610010318/+09 :00
我将该字符串传递给 DateTime.parse:
DateTime date = DateTime.parse("2021-01-07T18:05:18+0900");
Run Code Online (Sandbox Code Playgroud)
print(date.timeZoneOffset); --> 0:00:00.000000
print(date.timeZoneName); --> UTC
print(date); --> 2021-01-07 09:05:18.000Z
Run Code Online (Sandbox Code Playgroud)
Dart DateTime 文档(https://api.dart.dev/stable/2.10.4/dart-core/DateTime/parse.html):
结果始终采用当地时间或 UTC。如果指定了 UTC 以外的时区偏移,则时间将转换为等效的 UTC 时间。
为什么 timeZoneOffset 为 0?我需要将什么字符串传递给 DateTime.parse 才能让它以本地时间存储时间,而不是将其转换为等效的 UTC 时间?
我正在构建一个严重依赖键绑定的应用程序。现在,Flutter 支持大量的键绑定,并且声明 LogicalKeySet 非常简单:
final exampleKeySet = LogicalKeySet(
LogicalKeyboardKey.control,
LogicalKeyboardKey.comma,
);
Run Code Online (Sandbox Code Playgroud)
LogicalKeyboardKey键盘上几乎每个键(包括 Ctrl 和 Alt 键)都有一个值。但 Mac 上没有 Command 键选项。
如何将 Command 键与LogicalKeySet.
我需要通过 flutter workmanager 运行后台任务,但仅在应用程序关闭时运行。如何实现这样的行为。代码示例会很好。提前致谢
我是颤振的新手。我想对齐单选按钮。即,无论文本是什么,单选按钮都应该按列对齐。我正在使用Column小部件,然后Row在其中使用小部件,但得到以下结果。
代码在这里
Widget build(BuildContext context) {
return Container(
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Row(
children: [
Radio(value: 1, groupValue: 'null', onChanged: (index) {}),
Text('Radio button 1')
],
),
Row(
children: [
Radio(value: 1, groupValue: 'null', onChanged: (index) {}),
Text('Radio 2')
],
),
Row(
children: [
Radio(value: 1, groupValue: 'null', onChanged: (index) {}),
Text('Test')
],
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Row(
children: [
Radio(value: 1, groupValue: 'null', onChanged: (index) {}), …Run Code Online (Sandbox Code Playgroud) flutter ×10
dart ×5
android ×2
build.gradle ×1
datetime ×1
face-id ×1
fingerprint ×1
iso ×1
lockscreen ×1
macos ×1
navigator ×1
screen-lock ×1
widget ×1