错误:
安装 cocoapods 时出错:支持 Ruby 和 RubyGems 的最新版本的 activesupport(>= 5.0,< 8)是 6.1.7.3。尝试安装它
gem install activesupport -v 6.1.7.3,然后再次运行当前命令 activesupport 需要 Ruby 版本 >= 2.7.0。当前的 ruby 版本是 2.6.8.205。
sudo gem install cocoapods
我最近决定运行 flutter Upgrade,但是启动后,命令终端显示:
您的 flutter checkout 具有本地更改,这些更改将通过升级删除。如果您想保留这些更改,建议您通过“git stash”存储它们,或者将更改提交到本地分支。如果可以删除本地更改,则使用“--force”重新运行此命令。
我不知道“局部变化”是什么意思。我对 git 不太熟悉,通常不需要明确地搞乱它。我担心如果使用“--force”,我会把事情搞砸。
有什么方法可以让我首先检查这些更改是什么?这可能是我忘记的一些本地配置更改。
我不确定这是否是我们生活在这个勇敢的新 SwiftUI 世界中的反模式,但基本上我有一个 @EnvironmentObject,其中保存了一些基本的用户信息,我的视图可以调用。
我还有一个@ObservedObject,它拥有此视图所需的一些数据。
当视图出现时,我想使用@EnvironmentObject 来初始化@ObservedObject:
struct MyCoolView: View {
@EnvironmentObject userData: UserData
@ObservedObject var viewObject: ViewObject = ViewObject(id: self.userData.UID)
var body: some View {
Text("\(self.viewObject.myCoolProperty)")
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,在初始化之前,我无法在环境变量上调用 self :
“不能在属性初始值设定项中使用实例成员‘userData’;属性初始值设定项在‘self’可用之前运行。”
我可以看到一些可能的前进路线,但它们都感觉像是黑客。我应该如何处理这个问题?
AudioKit,macOS:
当我执行 Mixer.addInput(myAudioPlayer) 时,程序输出以下消息:
2021-09-16 11:41:44.578038+0200 ShowTime[16140:1611137] 投掷-10878
...无数次。
你知道-10878是什么以及如何修复它吗?
我也有兴趣了解“ShowTime[16140:1611137]”的含义。我可以使用这些数字来跟踪我的程序失败的位置吗?
谢谢。
在达特中,
说 和 说 有什么区别
Future<void> doStuff() async { ...
Run Code Online (Sandbox Code Playgroud)
和
void doStuff() async { ...
Run Code Online (Sandbox Code Playgroud)
我知道 Future<T> 是什么以及 async/await 一般如何工作,但我从未意识到 Future<void> 是一件事。我有一些代码到处都有 Future<void> ,我想用我正常的做事方式替换它,但我不想破坏任何东西。
请注意,这两个函数都使用异步。问题不是“异步函数和非异步函数之间有什么区别?” 或者“您能简短地尝试解释一下 Dart 中的异步编程吗?”
我知道已经有一个几乎相同的问题,但如果你仔细观察答案,你会发现没有人真正以清晰的方式回答这个问题 - 有什么区别?有什么区别吗?有没有区别?
为了详细说明,请考虑以下两个函数:
// notice there is no warning about not returning anything
Future<void> futureVoid() async {
await Future.delayed(Duration(seconds: 2), () {
var time = DateTime.now().toString();
print('$time : delay elapsed');
});
}
void nonFutureVoid() async {
await Future.delayed(Duration(seconds: 2), () {
var time = DateTime.now().toString();
print('$time : delay elapsed');
}); …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Windows 10中的Docker容器中运行应用程序。
但是我无法使GPU在docker内部工作。
我读到它需要“ GPU直通”。
我应该如何解决?
我在以这种方式创建的测试项目中有UITableView:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
tableView.delegate = self
tableView.dataSource = self
}
// height?
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
//return cellHeightWithoutSeparator + cellSeparatorHeight
//print("YES!")
return 80 // arbitrary
}
// table wants a UITableViewCell for each row
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = …Run Code Online (Sandbox Code Playgroud) 在 Mac 上使用 Android Studio 中的 Flutter 进行工作时(Arctic Fox 2021.3.1 Patch 4 和 XCode 13.1 和/或 13.2):
如果您使用 Finder 移动 Flutter 项目的根文件夹,然后在 Android Studio 中打开它并运行它,原始文件夹位置仍然会被重写(通常但不总是多个内容为空的子文件夹)。
此外,移动的项目将不再从 XCode 内构建。
这意味着,如果您在创建项目时不知道项目的最终所需位置,则将无法移动它而不发生奇怪的事情。
如何移动使用 Android Studio 创建的 Flutter 项目而不产生奇怪的副作用?
有关如何重现的更多信息:
关闭所有 IDE
打开Android Studio
使用 Android Studio,使用 Java 作为 Android 代码选择创建一个新的默认 FLUTTER 项目
使用 Android Studio,在 Android 模拟器上运行此项目
使用Android Studio,在IOS模拟器上运行该项目
使用Android Studio,在XCode中打开项目(右键单击ios文件夹并选择Flutter\Open project in Xcode)
使用XCode,在IOS模拟器上运行项目
[到目前为止一切都应该有效]
关闭所有 IDE
使用 Finder,将项目文件夹移动到与其当前文件夹深度相同但父文件夹不同的新位置。意思是如果当前位置是:[root]/x/y/a/my_project_original,则目的地将是:[root]/x/y/b/my_project_copy
删除原始文件夹并记住它在哪里
使用 Android Studio,从新位置打开项目
使用Android Studio,在XCode中打开项目(右键单击ios文件夹并选择Flutter\Open project in Xcode)
尝试在IOS模拟器上运行
[观察错误 - “命令 …
在 Java 中,我们如何将字节数组写入文件(并从该文件中读回)?
是的,我们都知道已经有很多这样的问题,但由于完成这项任务的方法有很多,所以它们变得非常混乱和主观。
因此,让我们缩小问题的范围:
领域:
我们想要什么:
我们没有做什么:
(因此,这排除了Apache Commons、Google Guava、Java.nio,并给我们留下了很好的 ol' Java.io)
我们需要的:
在我的特定情况下,这些方法是私有的(不是库),并且不负责以下内容,(但如果您想创建适用于更广泛受众的更通用的解决方案,那就去做吧):
所以......我们正在寻找最终的防弹代码,未来的人们可以认为可以安全使用,因为你的答案有很多赞成票,并且没有评论说,“这可能会崩溃如果...”
这是我到目前为止所拥有的:
将字节写入文件:
private void writeBytesToFile(final File file, final byte[] data) {
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.close();
} catch (Exception e) {
Log.i("XXX", "BUG: " + e);
}
}
Run Code Online (Sandbox Code Playgroud)
从文件中读取字节: …
假设在 Flutter 应用程序中,我们希望在顶层捕获任何未捕获的异常/错误,因此我们按照文档执行此操作:
main() {
// All uncaught errors thrown from synchronous code blocks will end up here:
FlutterError.onError = (FlutterErrorDetails details) {
MyLogger.instance.logUncaughtErrorSync(details);
};
// All uncaught errors thrown from async code blocks will end up here:
PlatformDispatcher.instance.onError = (Object error, StackTrace stack) {
MyLogger.instance.logUncaughtErrorASync(error, stack);
return true;
};
runApp(const MyApp());
Run Code Online (Sandbox Code Playgroud)
虽然文档似乎暗示两者之间的区别在于错误是否源自 Dart(特别是“Flutter”)代码与平台(Android/IOS)代码,但通过我的测试,我可以看出两者之间的唯一区别是对象(错误)是否是从异步或同步 Dart 代码中抛出的。
例如,如果在Dart代码(不是平台代码)中,我们只需输入:
_function() async {
throw('error');
}
Run Code Online (Sandbox Code Playgroud)
我们称之为该函数,它将通过“平台调度程序”冒泡并被视为“平台错误”,但似乎只是因为它发生在后台线程上?
实际上似乎没有任何机制允许从 Java 或 Swift 代码抛出异常来触发这些 onError 函数。
但肯定不止于此,那么拥有两种独立的机制(具有不同的输入——FlutterErrorDetails 与 Object+StackTrace)有什么意义……真正的区别是什么?
error-handling dart dart-async flutter flutter-platform-channel
flutter ×5
dart ×2
ios ×2
swift ×2
android ×1
arrays ×1
asynchronous ×1
audiokit ×1
cocoa-touch ×1
cocoapods ×1
dart-async ×1
docker ×1
file ×1
future ×1
git ×1
hyper-v ×1
java ×1
java-io ×1
macos ×1
rubygems ×1
swiftui ×1
uiscrollview ×1
uitableview ×1
windows-10 ×1
xcode ×1
xcode11 ×1