今天我将我的Studio更新为Canary 2,出现了一个奇怪的构建错误:
Information:Gradle tasks [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :multipicker:generateDebugSources, :multipicker:generateDebugAndroidTestSources, :multipicker:mockableAndroidJar]
Information:0 errors
Information:0 warnings
Information:See complete output in console
Error:/home/master/AndroidStudioProjects/Reweyou/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:795 invalid drawable
Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
aapt2 compile -o /home/master/AndroidStudioProjects/Reweyou/app/build/intermediates/res/merged/debug /home/master/AndroidStudioProjects/Reweyou/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml
Issues:
- ERROR: /home/master/AndroidStudioProjects/Reweyou/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:795 invalid drawable
Information:BUILD FAILED in 11s
Run Code Online (Sandbox Code Playgroud) 我知道有两种方法可以将数据添加到流控制器,一种是通过使用接收器直接添加数据.我试图阅读Sink的文档,但我无法理解它的概念,如管道数据等.
我想在我的adb设备中查看数据库文件,但是当打开flutter项目时,android studio中缺少设备文件资源管理器的选项。但是当我打开android模块或只是一个android项目时,这是可见的。我想在flutter项目本身中查看设备文件
目前,仅仅因为必须在其中传递上下文,就非常忙于从应用程序中的任何代码层显示对话框。因此我想通过 navigatorKey.currentContext (导航键是传递给 Material app navigatorKey 参数的全局键)来显示对话框。但我得到了错误
“使用不包含导航器的上下文请求的导航器操作。用于从导航器推送或弹出路由的上下文必须是作为导航器小部件后代的小部件的上下文。”
问题是 showDialog 在内部调用 Navigator.of(context) 并查找导航器祖先,该祖先当然会返回 null,因为导航器本身就是根。因此它不会找到作为祖先的导航器。
有没有办法可以直接将导航器状态/上下文传递给 showDialog 函数来显示对话框?或者,如果我们想从 bloc 显示它,是否有更简单的方法来显示 Dialog 而不将上下文传递给它?
假设我有 2 张卡,屏幕上一次显示一张。我有一个按钮可以用其他卡替换当前卡。现在假设卡 1 上有一些数据,卡 2 上有一些数据,我不想销毁它们每个上的数据,或者我不想再次重建它们中的任何一个。
我尝试使用 Stack Widget,并在顶部卡片上使用布尔值将一个组件重叠在其他组件之上。setstate
通过按下按钮时调用,可以反转此布尔值的值。问题是,一旦我按下按钮,新卡就会再次重建,然后initState
再次显示或被调用,这是我不想要的。有什么解决办法吗?
编辑:示例代码:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() …
Run Code Online (Sandbox Code Playgroud)