标签: flutter

如何使用cached_network_image预加载图像?

我刚刚实现了 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,文件总是会再次缓存。

dart flutter

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

Navigator.popUntil flutter 显示黑屏

我的项目中有两个不同的流程。

  1. 主页 -> A页 -> B页 -> C页 -> A页

从C页到A页,我使用了这段代码,效果很好。

   Navigator.popUntil(context, ModalRoute.withName(AssetMenu.ROUTE));
Run Code Online (Sandbox Code Playgroud)
  1. 当收到推送通知时,用户点击推送通知,我希望它立即像这样导航

主页 -> 页面 B -> 页面 C -> 单击页面 C 中的按钮后返回页面 A。

但是当点击C页的按钮时,却显示黑屏。

我应该如何处理这个问题?

navigator dart flutter

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

Flutter:FirebaseException:发生内部错误。[ CONFIGURATION_NOT_FOUND ]

我能够成功进行 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)

dart flutter

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

如何在flutter中绘制半个Icon

我需要带有两部分的圆角圆圈图标,具有不同的颜色。

我尝试使用 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)

flutter flutter-layout

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

任务“:app:compressDebugAssets”执行失败

执行失败:

任务 ':app:compressDebugAssets'。> 执行 com.android.build.gradle.internal.tasks.CompressAssetsWorkAction 时发生故障 > \app\build\intermediates\merged_assets\debug\out

android android-studio build.gradle flutter

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

检查用户是否使用 Flutter 配置了屏幕锁定方法(PIN/生物识别/图案/等)?

我想检查用户是否在其设备上设置了任何类型的屏幕锁定(PIN、指纹、面部、图案等)。

我不想简单地检查设备是否能够进行生物识别等功能,也不想(从后台)检测设备当前是否已锁定。我想知道用户是否为他们的设备配置了任何类型的锁定机制。

到目前为止我遇到的所有资源和代码片段似乎都集中在

  • 检查设备是否具有生物识别功能,或者
  • 实际上请求使用生物识别/PIN/模式进行身份验证,或者
  • 检查设备当前是否已锁定(当应用程序在后台时)

我想简单地检查设备是否配置了任何类型的锁定并需要解锁手机。如果没有,我想在我的应用程序中隐藏一些敏感信息。

有没有办法在 Android 和 iOS 上都做到这一点?

fingerprint lockscreen screen-lock flutter face-id

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

Dart DateTime.parse timeZoneOffset 始终为 0

DateTime.parse 创建的 DateTime 似乎总是为“timeZoneOffset”返回 0

  1. 我在非 UTC 时区中创建了一个 ISO8601 字符串:https://timestampgenerator.com/1610010318/+09 :00

  2. 我将该字符串传递给 DateTime.parse:

  DateTime date = DateTime.parse("2021-01-07T18:05:18+0900");
Run Code Online (Sandbox Code Playgroud)
  1. 问题:当我期望 +0900 时,timeZoneOffset 为 0。
  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 时间?

datetime iso dart flutter

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

Flutter MacOS 获得 CMD 的 LogicalKeyboardKey

我正在构建一个严重依赖键绑定的应用程序。现在,Flutter 支持大量的键绑定,并且声明 LogicalKeySet 非常简单:

 final exampleKeySet = LogicalKeySet(
    LogicalKeyboardKey.control,
    LogicalKeyboardKey.comma,
  );
Run Code Online (Sandbox Code Playgroud)

LogicalKeyboardKey键盘上几乎每个键(包括 Ctrl 和 Alt 键)都有一个值。但 Mac 上没有 Command 键选项。

如何将 Command 键与LogicalKeySet.

macos dart flutter

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

如何仅在应用程序关闭时运行workmanager任务?

我需要通过 flutter workmanager 运行后台任务,但仅在应用程序关闭时运行。如何实现这样的行为。代码示例会很好。提前致谢

android background-process flutter flutter-workmanager

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

颤动中的单选按钮对齐

我是颤振的新手。我想对齐单选按钮。即,无论文本是什么,单选按钮都应该按列对齐。我正在使用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)

widget flutter

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