标签: flutter-android

Fire Storage 异常([firebase_storage/unauthorized] 用户无权执行所需的操作。)(我的规则是允许读/写)

我正在尝试从 firebase firestore 获取图像,在尝试获取图像下载 url 时出现以下异常:

W/StorageUtil(10206):没有请求的身份验证令牌

(与此错误类似的问题无法解决问题)

尽管我的安全规则允许读取和写入,但我仍然收到此错误。

有什么想法这有什么问题吗?

获取图片url的代码:

  static Future<dynamic> loadImage(BuildContext context, String image) async {
    return await FirebaseStorage.instance.ref().child(image).getDownloadURL();
  }
Run Code Online (Sandbox Code Playgroud)

调用这个loadImage函数:

  Future<Widget> getImage(BuildContext context, String imgName) async {
   Image image;
    await FireStorageService.loadImage(context, imgName).then((value) {
    print(value);
    image = Image.network(value.toString(), fit: BoxFit.scaleDown);
    return image;
   });
  }
Run Code Online (Sandbox Code Playgroud)

调用这个 getImage 函数:

child: FutureBuilder(
future: getImage(context, "/images/test1.jpg"),
...
)
Run Code Online (Sandbox Code Playgroud)

我的 firebase 存储规则:

rules_version = '2';
service firebase.storage {
match /images/{imageId} {
  allow read,write;
}
}
Run Code Online (Sandbox Code Playgroud)

存储规则ss:

在此输入图像描述

我目前的 firebase 商店: 我目前的 firebase 商店

dart firebase flutter flutter-android

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

使用函数声明将函数绑定到名称

我是颤振的新手。我正在使用相机插件将相机添加到我的应用程序中。我收到此警告使用函数声明将函数绑定到名称。我该如何解决这个问题?

代码 -

Widget _cameraTogglesRowWidget() {
    final List<Widget> toggles = <Widget>[];

    final onChanged = (CameraDescription? description) {
      if (description == null) {
        return;
      }

      onNewCameraSelected(description);
    };
Run Code Online (Sandbox Code Playgroud)

flutter flutter-plugin flutter-widget flutter-ios flutter-android

7
推荐指数
1
解决办法
6659
查看次数

Flutter:无法从缓存加载构建文件“...\android\build.gradle”的编译类

无需调试即可运行:

A problem occurred configuring root project 'android'.
> Could not load compiled classes for build file 'D:\FLUTTER\task_manager\android\build.gradle' from cache.
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

A problem occurred configuring root project 'android'.
> Could not load compiled classes for build file 'D:\FLUTTER\task_manager\android\build.gradle' from cache.

* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring root project 'android'.
        at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:75)
        .
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
        at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
        at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:226)
        at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:164)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:125)
        at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:71) …
Run Code Online (Sandbox Code Playgroud)

android flutter flutter-android

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

Flutter 中的控制台消息

我目前在 Flutter 版本 2.6.0-12.0.pre.406 的主频道中,每次运行应用程序时,我都会在控制台中收到这些奇怪的消息,我只想知道为什么以及它们的含义以及是否可以忽略这些。当我新创建一个应用程序并在不编辑任何内容的情况下运行它时,甚至会发生这种情况。所以即使我正在运行示例应用程序。

\n

这是输出:

\n
Launching lib\\main.dart on ... in debug mode...\nRunning Gradle task 'assembleDebug'...                              7,0s\n\xe2\x88\x9a  Built build\\app\\outputs\\flutter-apk\\app-debug.apk.\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: true\nI/ViewRootImpl@963f43d[MainActivity](25682): [DP] cancelDraw io.flutter.embedding.android.FlutterActivityAndFragmentDelegate$2@ba09739  isViewVisible: …
Run Code Online (Sandbox Code Playgroud)

android android-studio flutter flutter-android flutter-debug

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

Flutter:请求用户许可,直到获得许可

使用https://pub.dev/packages/permission_handler获取权限

但如果用户拒绝许可,它不会再次询问用户。

目前在android上检查过(iOS设备不可用)

请帮忙

android android-permissions flutter flutter-android

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

无法在 Android 中为 flutter_downloader 打开下载的文件

我正在尝试通过 flutter_downloader 下载一个虚拟的 .mp4(或任何文件)。这是我的代码片段

void mobileDownload(filename) async {
    final status = await Permission.storage.request();
    if (status.isGranted){ //user grants download permission
        final storagePath = await getExternalStorageDirectory();
        print(storagePath!.path);
        final taskId = await FlutterDownloader.enqueue(
          url: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4',
          savedDir: storagePath.path,
          fileName: '$filename.mp4',
          showNotification: true,
          openFileFromNotification: true,
        );
    }
  }
Run Code Online (Sandbox Code Playgroud)

通过编写通用回调(与此处提供的回调相同https://pub.dev/packages/flutter_downloader),我可以看到我的文件正在下载,进度显示为

D/DownloadWorker( 6368): Update too frequently!!!!, this should be dropped
I/flutter ( 6368): 97
D/DownloadWorker( 6368): Update notification: {notificationId: 10, title: testApp.mp4, status: 2, progress: 100}
D/DownloadWorker( 6368): insert description= _display_name=testApp.mp4 datetaken=1625756663182 mime_type=video/mp4 _data=/storage/emulated/0/Android/data/com.example.flutter_app/files/testApp.mp4 title=testApp.mp4 …
Run Code Online (Sandbox Code Playgroud)

android flutter flutter-android

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

即使聚焦后,Flutter Android TV 按钮也无法点击

我有一个可用的 Flutter 应用程序,带有简单的注册表单。我尝试在 Android TV 中安装它。并且能够在 android 清单中看到它正在与电视相关的配置一起运行。

即使提供焦点后该按钮也不可单击。以下是场景。我的表单元素按以下顺序显示。

  • --(名称)TextFormField--
  • --(年龄)TextFormField--
  • --(提交)FlatButton--

从电视遥控器,使用 dpat,我进行了如下导航。

  1. 导航到名称,单击软键盘上的下一步按钮。
  2. 使用键盘聚焦年龄字段,单击软键盘上的“完成”按钮。
  3. 提交重点。当我点击它时,它工作正常。
  4. 使用远程方向键点击向上按钮。焦点又回到了年龄领域,并做了一些改变。
  5. 再次单击完成按钮。焦点移回“提交”按钮。
  6. 现在点击提交按钮什么都不做。(不在这里工作)

对于焦点/选择失败我该怎么办?

附加最小的可重现代码。清单配置更改后,必须在 Android TV 模拟器或真实 Android TV 中执行此代码。

代码:

    import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Shortcuts(
      shortcuts: <LogicalKeySet, Intent>{
        LogicalKeySet(LogicalKeyboardKey.select): ActivateIntent(),
      },
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage();

  @override
  _MyAppState …
Run Code Online (Sandbox Code Playgroud)

android-tv flutter flutter-android

5
推荐指数
0
解决办法
1120
查看次数

Flutter 的 TextPainter 抛出一个 '!_needsLayout': is not true。例外

我尝试使用 aTextPainter来获取 Text Widget 中字符串的最大长度,但是如果我调用 Painter,它会抛出!_needsLayout': is not true.异常。

例外

The following assertion was thrown building FeedPage(dirty, dependencies: [MediaQuery], state: _FeedPageState#9c489):
'package:flutter/src/painting/text_painter.dart': Failed assertion: line 546 pos 12: '!_needsLayout': is not true.
Run Code Online (Sandbox Code Playgroud)

使用 TextPainter 的方法

int maxCharCountToFit(String content) {
    List<String> splitted = content.split(" ");

    for (int i = splitted.length; i >= 0; i--) {
      bool retry = TextPainter(
            text: TextSpan(text: splitted.sublist(0, splitted.length - i).join(" "), style: pageTextStyle),
            maxLines: 25,
            textScaleFactor: MediaQuery.of(context).textScaleFactor,
            textDirection: TextDirection.ltr,
          ).didExceedMaxLines ==
          false; …
Run Code Online (Sandbox Code Playgroud)

android dart flutter flutter-android

3
推荐指数
1
解决办法
1562
查看次数

启动画面颜色在 Flutter 中没有变化

我是 Flutter 新手,仍在练习中

我正在创建一个启动屏幕,但启动屏幕的颜色没有改变

我的代码:

-launch_background.xml

<?xml version="1.0" encoding="utf-8"?>
    <!-- Modify this file to customize your launch splash screen -->
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@android:color/black" />
    
        <!-- You can insert your own image assets here -->
        <!-- <item>
            <bitmap
                android:gravity="center"
                android:src="@mipmap/launch_image" />
        </item> -->
    </layer-list>
Run Code Online (Sandbox Code Playgroud)

-main.dart

import 'package:flutter/material.dart';
import 'package:id_locker/Screens/HomeScreen.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: HomeScreen(),
    ); …
Run Code Online (Sandbox Code Playgroud)

splash-screen dart flutter flutter-layout flutter-android

3
推荐指数
1
解决办法
3438
查看次数

任务“:location:compileDebugKotlin”执行失败

任务“:location:compileDebugKotlin”执行失败。

运行 Gradle 任务 'assembleDebug'... e: /Users/apple/.pub-cache/hosted/pub.dartlang.org/location-4.3.0/android/src/main/java/com/lyokone/location/FlutterLocationService .kt: (124, 1): 类 'FlutterLocationService' 不是抽象的,也没有实现抽象成员 public Abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean 定义于io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener e:/Users/apple/.pub-cache/hosted/pub.dartlang.org/location-4.3.0/android/src/main/java/com/lyokone/location /FlutterLocationService.kt: (258, 5): 'onRequestPermissionsResult' 不覆盖任何内容

失败:构建失败并出现异常。

  • 出了什么问题:任务“:location:compileDebugKotlin”执行失败。

编译错误。查看日志了解更多详情

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。

  • 在https://help.gradle.org获取更多帮助

4 秒内构建失败异常:Gradle 任务 assembleDebug 失败,退出代码为 1

flutter fluttermap flutter-android

3
推荐指数
2
解决办法
4776
查看次数