在Firebase主要版本更新后,尤其是2019年6月17日更新之后,我无法编译Ionic Cordova App。
我尝试降级到Android Cordova 6.3.0,但我的项目必须为7.0.0。
这是我的离子信息:
@ionic/cli-utils : 1.19.2
ionic (Ionic CLI) : 3.20.0
global packages:
cordova (Cordova CLI) : 8.0.0
local packages:
@ionic/app-scripts : 3.2.1
Cordova Platforms : android 7.0.0 browser 5.0.4
Ionic Framework : ionic-angular 3.9.3
System:
Android SDK Tools : 26.1.1
Node : v8.9.1
npm : 5.5.1
OS : Windows 10
Environment Variables:
ANDROID_HOME : C:\Development\android-sdk
Misc:
backend : pro
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
:app:processDebugResources C:\ Users \ mmzep.gradle \ caches \ transforms-1 \ files-1.1 \ core-1.0.0.aar \ 73b4a83ab5e76f20c84a66b1c8444d08 …
我有一个 WPF 用户控件,其中包含BindableRichTextBox:
xmlns:controls="clr-namespace:SysadminsLV.WPF.OfficeTheme.Controls;assembly=Wpf.OfficeTheme"
.
.
.
<controls:BindableRichTextBox Background="Black"
Foreground="White"
FontFamily="Consolas"
FontSize="12"
IsReadOnly="True"
IsReadOnlyCaretVisible="True"
VerticalScrollBarVisibility="Auto"
IsUndoEnabled="False"
Document="{Binding Contents}"/>
Run Code Online (Sandbox Code Playgroud)
内容由 ViewModel 属性控制Document:
using System.Windows.Documents;
class MyViewModel : ILogServerContract
{
readonly Paragraph _paragraph;
public MyViewModel()
{
_paragraph = new Paragraph();
Contents = new FlowDocument(_paragraph);
}
public FlowDocument Contents { get; }
//Log Server Contract Write method (accessed via NetPipe)
public void WriteLine(string text, int debugLevel)
{
//figure out formatting stuff based on debug level. not important
_paragraph.Inlines.Add(new Run(text) …Run Code Online (Sandbox Code Playgroud) 我有一个 ObservableCollection 类型的数据集合(比如 myClassTypes 实例)。在一些用户操作之后,这个 myClassTypes 填充了 ViewModel 中的值。在视图中,有一个文本框,用户可以在其中输入文本。我需要根据 myClassTypes 值验证文本框数据。因此,如果 myClassTypes 包含用户在文本框中插入的文本,则验证通过,否则将失败。我的代码片段是:ViewModel:
public ObservableCollection < MyClassType > ViewModelClassTypes {
get {
return _myClassTypes;
}
set {
_myClassTypes = value;
NotifyOfPropertyChange(() = >MyClassTypes);
}
}
public class TestValidationRule: ValidationRule {
public ObservableCollection < MyClassType > MyClassTypes {
get = >(ObservableCollection < MyClassType > ) GetValue(MyClassTypesProperty);
set = >SetValue(MyClassTypesProperty, value);
}
}
Run Code Online (Sandbox Code Playgroud)
仅供参考:MyClassTypesProperty 是一个依赖属性
我的 View.xaml 是:
<TextBox>
<TextBox.Text>
<Binding UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<validationRules:TestValidationRule MyClassTypes="{Binding ViewModelClassTypes}"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
我无法在 MyClassTypes …
我的项目在调试模式下一切正常,但发布后,除了一个程序外,一切正常。
这是程序:
Future<void> downloadFile() async{
Dio dio = Dio();
var directory = await getApplicationDocumentsDirectory();
await dio.download(bookUrl, "${directory.path}/$className + $bookName.pdf",
onReceiveProgress: (rec, total){
setState(() {
downloading = true;
percentage = ((rec/total) * 100).toStringAsFixed(0)+'%';
});
}
);
setState(() {
downloading = false;
percentage = 'Download Completed';
});
Run Code Online (Sandbox Code Playgroud)
}
这是发布应用程序运行时我收到的错误消息:
E/flutter (25796): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] 未处理的异常:DioError [DioErrorType.DEFAULT]:SocketException:主机查找失败:'www.ets.org'(操作系统错误:没有与主机名关联的地址,errno = 7) E/flutter (25796): #0 Dio._makeRequest (package:dio/src/dio.dart:799) E/flutter (25796): E/flutter (25796): # 1 Dio._request.. (package:dio/src/dio.dart:711) E/flutter (25796): #2 _rootRunUnary (dart:async/zone.dart:1132) E/flutter (25796): #3 _CustomZone .runUnary (dart:async/zone.dart:1029) E/flutter (25796): …
我正在尝试创建一个类和方法,可以在任何窗口和页面上使用它来更改 MainWindow 窗口上显示的当前页面。
到目前为止我得到了:
class MainWindowNavigation : MainWindow
{
public MainWindow mainWindow;
public void ChangePage(Page page)
{
mainWindow.Content = page;
}
}
Run Code Online (Sandbox Code Playgroud)
主窗口本身:
public MainWindow()
{
InitializeComponent();
MainWindowNavigation mainWindow = new MainWindowNavigation();
mainWindow.ChangePage(new Pages.MainWindowPage());
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这最终导致了 System.StackOverflowException。
创建此内容的主要原因是我希望能够从当前显示在 mainWindow.Content 中的页面更改 mainWindow.Content。
我已经审查过 MVVM,但我认为不值得将它用于像这样的小型应用程序,因为我想要它做的就是在打开时显示欢迎页面,然后在侧面会有几个按钮。一旦按下, mainWindow.Content 正确地更改为用户可以输入登录详细信息的页面,然后按下登录页面上的按钮,我想在成功验证输入的登录详细信息后将 mainWindow.Content 更改为不同的页面。
我最近将我的应用程序从AppCompat迁移到Androidx,但现在GlideApp面临严重问题。每当我尝试构建项目时,它都会显示编译失败。
我尝试更改以下导入语句,
import android.support.annotation.CheckResult;
import android.support.annotation.NonNull;
Run Code Online (Sandbox Code Playgroud)
在构建文件夹中:
import androidx.annotation.CheckResult;
import androidx.annotation.NonNull;
Run Code Online (Sandbox Code Playgroud)
但是每当我重建它时,它只会重新生成以前的import语句并返回以下错误:
错误:程序包android.support.annotation不存在错误:找不到符号类NonNull
据我了解,清洁架构实体被布置为所有上层都直接或间接依赖的层,基于这样的假设:实体中的数据和业务规则是架构中最稳定的部分。
同时,实体包含父层所依赖的数据类,如果没有映射器用于数据,则其余的数据类。
但现实中的数据往往不够稳定。
下面是一个示例:假设您有一个用于销售汽车的应用程序。汽车数据由一个结构体来描述,其中包含描述、品牌、价格等参数。要求正在发生变化,现在,应用程序中与汽车混合在一起,应该有摩托车销售广告。有些字段与汽车相同,例如价格和描述,有些字段不同。
您无法将有关汽车和摩托车的数据放入一个结构中,因为这样就可以添加任何类型的广告,并且该结构将像癌瘤一样膨胀。
在更高级别实现多态行为也不起作用,因为这将生成结构本身的依赖项+层次结构中的循环依赖项,或者直接从上层到该结构的依赖项,这也很糟糕。当然,您可以在整个映射器链中重复此行为,但这需要很长时间并且会增加代码量。
仍然需要创建一个单独的数据类型和转发该数据的整个分支,这同样不方便,并且会在顶层添加依赖项。
给人的印象是,当数据发生变化时,清洁架构是脆弱的。
也许我不明白一些基本的东西,这个问题可以轻松解决吗?如果是这样,请写下到底是什么,如果不是 - 你能做点什么吗?)
我有一个方法定义为:
public Task<ReturnsMessage> Function() {
var task = Task.Run(() =>
{
var result = SyncMethod();
return new ReturnMessage(result);
});
if (task.Wait(delay)) {
return task;
}
var tcs = new TaskCompletionSource<ReturnMessage>();
tcs.SetCanceled();
return tcs.Task;
}
Run Code Online (Sandbox Code Playgroud)
现在在基于maxAttempts值的循环中调用它:
(方法名RetryableInvoke)
for (var i = 0; i < maxAttempts; i++)
{
try
{
return Function().Result;
}
catch (Exception e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当负载很大时,我发现线程急剧增加,转储向我显示此警告:
我想做的是以下几点:
我有一个CefSharp ChromiumWebBrowser(WPF控件),我想在该浏览器中截取网页的屏幕截图。屏幕ChromiumWebBrowser上没有获取屏幕截图的方法。但是我可以通过将事件处理程序附加到OnPaint浏览器的事件来获取渲染。这样,我得到的位图就是屏幕截图。该过程基于以下答案:https : //stackoverflow.com/a/54236602/2190492
现在,我正在创建一个类CefSharpScreenshotRecorder,该类负责拍摄屏幕截图。它应该接受浏览器实例,将事件处理程序附加到OnPaint事件,并获取位图。该过程的所有状态都应封装在CefSharpScreenshotRecorder该类中。我希望能够异步使用我的课程。因为我们必须等到OnPaint事件被触发。触发该事件(并调用事件处理程序)后,该事件处理程序中将提供一个位图。然后,该位图应该是最初调用的异步方法的结果(如CefSharpScreenshotRecorder.TakeScreenshot(...cefBrowserInstance...)。当然,所有事情都必须在不阻塞/滞后UI的情况下发生。
我对C#中的异步编程不是很熟悉。我遇到的问题是,我找不到找到一种可以等待的方法的方法,该方法仅在被调用时代表OnPaint事件处理程序返回。我什至不知道是否存在任何代码功能来创建此逻辑。
c# ×4
wpf ×4
android ×2
async-await ×2
.net ×1
androidx ×1
architecture ×1
cefsharp ×1
cordova ×1
deadlock ×1
debugging ×1
firebase ×1
flutter ×1
ionic3 ×1
mvvm ×1
navigation ×1
release ×1
screenshot ×1
uml ×1
validation ×1
viewmodel ×1
xaml ×1