我有一个针对 Android 的 Flutter 应用程序。我已经用Semantics小部件包装了大多数小部件,以向屏幕阅读器提供信息(仅不包括文本小部件)。
Semantics(
button: true,
label: AppLocalizations.of(context)!.description,
child: IconButton(
icon: const Icon(
Icons.emoji_events,
),
onPressed: () {
//do something
},
),
),
Run Code Online (Sandbox Code Playgroud)
然而,Google 控制台和辅助功能扫描工具抱怨整个屏幕的内容标签缺失。因此,整个屏幕周围有一条红线,而不是任何单个小部件周围。由于某种原因,尽管我的应用程序只有 4 个屏幕,但我的应用程序有 723 张带有线条的图片!
我究竟做错了什么?是否Scaffold需要用语义小部件包装?或者是否缺少设置MaterialApp?
我有一个针对 Android 的 Flutter 应用程序。
ANR最近,我开始在 Google Play Console 预发布报告中收到错误。我没有对我的应用程序进行任何重大更改来触发此操作,因此谷歌似乎突然采取了不同的做法。
错误如下:
com.google.android.apps.messaging 中的 ANR;PID:12100;意图广播 { act=com.google.android.gms.phenotype.UPDATE flg=0x30 pkg=com.google.android.apps.messaging cmp=com .google.android.apps.messaging/com.google.apps.tiktok.experiments.phenotype.ConfigurationUpdatedReceiver_Receiver(有额外功能)};
com.google.android.dialer 中的 ANR;PID:8132;意图广播 { act=com.google.android.gms.phenotype.UPDATE flg=0x30 pkg=com.google.android.dialer cmp=com.google.android .dialer/com.google.apps.tiktok.experiments.phenotype.ConfigurationUpdatedReceiver_Receiver(有额外内容)};
com.google.android.apps.photos 中的 ANR;PID:9438;意图广播 { act=com.google.android.gms.phenotype.UPDATE flg=0x30 pkg=com.google.android.apps.photos cmp=com .google.android.apps.photos/com.google.android.libraries.phenotype.client.stable.PhenotypeUpdateBackgroundBroadcastReceiver(有额外功能)};
com.google.android.apps.safetyhub 中的 ANR;PID:12115;意图广播 { act=com.google.android.gms.phenotype.UPDATE flg=0x30 pkg=com.google.android.apps.safetyhub cmp=com .google.android.apps.safetyhub/com.google.apps.tiktok.experiments.phenotype.ConfigurationUpdatedReceiver_Receiver(有额外功能)};
我的应用程序不使用photos、dialer或任何类型的messaging. 甚至不确定safety hub是什么。
奇怪的是,只有一台设备报告这些错误(Pixel 6 arm64 API 31)。谷歌用于测试的其他设备没有报告这一点。如果我的应用程序出现问题,我怀疑所有设备都会得到它(或者至少是同一 API 上的所有设备)。或者我在这里遗漏了什么?
可以做什么?
我使用的是 Google 的官方in_app_purchase 包,但我找不到任何有关如何在设置后在 Flutter 中测试 IAP 的信息。
Android 和 iOS 有自己的指南,但它们要求您手动添加库和代码,这与 Flutter 自动生成原生代码的方式不兼容。
Flutter 中的应用程序购买测试是否有“正确”的方法?
我有一个包含很多 Lottie 动画的应用程序。它们在 Windows UWP 应用程序和AirBnB 示例 Android 应用程序中运行良好。在lottiefiles.com 在线测试工具中也看起来不错。
但是在使用Lottie for Flutter包的 Flutter 中它们出现了问题。不是全部,但很多,也许大约三分之一。
完整源码如下,大家可以自己尝试一下。
故障要么是帧重叠,要么是闪烁,就好像帧之间存在间隙一样。
故障是一致的,即总是发生在同一个地方,所以看起来不像是性能问题。此外,它们不是在重复之间发生,而是在动画中间发生,因此这又不是应用程序问题,但似乎是它们渲染方式的问题。
我尝试过composition使用controller. 我还尝试了普通资产加载来排除我的实施问题,它们的行为是相同的。该问题同时出现在模拟器和实际手机中。所以在我看来,这不是由我实现的方式引起的,而是由 Lottie 包本身引起的,或者可能是 Lottie JSON 的问题,由于某种原因只影响 Android。
完整示例如下。只需将其粘贴到 main.dart 并将依赖项添加到 yaml: lottie: ^1.2.1。
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(),
darkTheme: ThemeData.dark(),
themeMode: ThemeMode.dark, …Run Code Online (Sandbox Code Playgroud) 我有一个针对 Android 的 Flutter 应用程序。我曾经使用以下命令构建应用程序包:
flutter build appbundle --release
Run Code Online (Sandbox Code Playgroud)
然后,我会从文件夹中压缩并上传本机调试符号build\app\intermediates\merged_native_libs\release\out\lib。
我正在尝试使用混淆,因此我已切换到以下命令:
flutter build appbundle --release --obfuscate --split-debug-info=./build/symbols
Run Code Online (Sandbox Code Playgroud)
这有效,它在我的“build/symbols”文件夹中创建了三个文件:
当我将这三个文件压缩成symbols.zip文件并用于upload native debug symbolsPlay 商店时,它们被拒绝并出现以下错误:
本机调试符号包含意外文件:app.android-x64.symbols。应用程序.android-arm64.符号。app.android-arm.symbols。
我仍然可以build\app\intermediates\merged_native_libs\release\out\lib像以前一样上传符号。
有人可以解释一下这两组符号文件之间有什么区别以及我应该在商店提交中使用什么?
我正在运行 Flutter 发布版本并收到警告Proguard configuration rule does not match anything。完整列表见下文。
这应该提交给 Flutter GitHub 问题还是我做错了什么?
我的构建命令是:(
flutter build appbundle --release --obfuscate --split-debug-info=./build/symbols
如果我删除--obfuscate标志也会发生同样的情况)
我的项目不包含任何proguard-rules.pro文件。
我的app/build.gradle配置是:
buildTypes {
release {
signingConfig signingConfigs.release
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64' //, 'x86'
}
minifyEnabled true
shrinkResources true
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下构建工具和设置:
完整的警告列表
Info: Proguard configuration rule does not match anything: `-keepclassmembers class …Run Code Online (Sandbox Code Playgroud) 我正在使用视觉状态自适应触发器根据有效的屏幕分辨率更改页面外观。这很好用,但我无法让它适用于 ListView 项目。
我的 ListView 看起来像这样:
<ListView x:Name="listView" >
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock FontSize="20" Text="{Binding MyItem}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我可以在 XAML 中静态更改 TextBlock 字体大小。但我不知道如何在 VisualState setter 目标中引用它。作为自动生成的子项,我无法给 TextBlock 命名。我的视觉状态代码如下。我放了???我想在其中引用 ListView TextBlock 项 FontSize。
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="NormalStateReadView">
<!-- VisualState to be triggered when window width is <720 effective pixels -->
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="???" Value="20" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
<VisualStateGroup>
<VisualState x:Name="NormalStateReadView">
<!-- VisualState to be triggered when window width is >=720 effective pixels -->
<VisualState.StateTriggers>
<AdaptiveTrigger …Run Code Online (Sandbox Code Playgroud) 我试图在导航栏上放置 3 个元素。左对齐的品牌,右对齐的一组在移动设备上折叠的链接,以及一个与链接一样右对齐的附加按钮,但不应与它们一起折叠。
为了右对齐按钮和链接,我将它们包裹在 ml-auto div 中。这在移动设备上效果很好(第一张图片),但在 PC 上,按钮出现在链接上方(第二张图片)。我尝试将 btn-group 添加到 div 中,这种方法可行,但按钮与链接合并,看起来很奇怪(第三张图片)。
如何正确水平对齐这些组件?
请注意,我不希望该按钮与其他右侧链接位于同一组中。我希望即使在小屏幕上该按钮也始终可见。我在 SO 上看到过一些类似的问题,但它们在同一个可折叠组中都有正确对齐的项目,这对我来说没有好处。
您可以将以下代码粘贴到w3school TryIt 编辑器
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<a class="navbar-brand" href="#">Home</a>
<div class="ml-auto">
<button class="btn btn-success">My Button</button>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto"/>
<ul class="navbar-nav ml-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Right Link 1</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="#">Right Link 2</a>
</li>
</ul>
</div>
</nav>
Run Code Online (Sandbox Code Playgroud) 我有一个适用于手机/平板电脑的 android 应用程序。我想添加对 Android TV 的支持。
官方文档说要为电视创建一个单独的活动。
电话和电视之间的唯一区别是表示层(即视图),所以我只需要创建新的布局,而不是控制器。
我创建了适用于电视的布局并使用相同的控制器。问题是我无法指定哪些布局适用于电视,哪些布局适用于手机/平板电脑。
我无法对屏幕尺寸和设备类型做出假设。有些手机的屏幕分辨率高于电视,反之亦然。
如何为电话和电视提供不同的布局?
如果有更好的方法可以在不编写(或复制)我现有的 Java 代码的情况下做到这一点,我也会接受。
我有一个有条件的异步任务。如果它被调用,我想等待它,但显然,如果它不是,就不要等待它。
这是我尝试过的。
Task l;
if(condition)
{
l = MyProcessAsync();
}
//do other stuff here
if(condition)
{
await Task.WhenAll(l); //unassigned variable error
}
Run Code Online (Sandbox Code Playgroud)
我收到Use of unassigned local variable 'l'编译器错误。
这样做的合适方法是什么?
flutter ×6
android ×5
c# ×2
android-r8 ×1
android-tv ×1
async-await ×1
bootstrap-4 ×1
css ×1
dart ×1
google-play ×1
html ×1
ios ×1
lottie ×1
obfuscation ×1
proguard ×1
testing ×1
uwp ×1
xaml ×1