我遇到了 Flutter Web 的 TextField 问题。每当文本变得太长,从而导致 TextField 滚动查看所有内容(在单行字段中)时,我不再能够单击并拖动以选择文本。当文本较短时,选择很好。你可以看到附在此处的 GIF:

我认为这与手势捕获的顺序错误有关,但我无法找到解决方法。
根据这个 github issue上的一些人的说法,文本选择问题的一种解决方案是使用以下两个命令之一:
flutter run -d chrome --release --dart-define=FLUTTER_WEB_USE_SKIA=trueflutter run -d chrome --release --dart-define=FLUTTER_WEB_USE_EXPERIMENTAL_CANVAS_TEXT=true虽然问题是针对多行文本字段的,但不幸的是似乎都没有解决我的问题。
我曾尝试使用多行文本框,但如果我设置maxLines为固定数字(如 5),则在垂直滚动和选择时会遇到类似问题。
我曾考虑过使用 html 渲染插件,例如flutter_html以这种方式渲染文本字段,但如果可能的话,我想避免这样做。
在我的代码中,我有一个部分可以创建一个WKWebView带有特定的新内容,而该特定WKWebViewConfiguration内容又具有WKPreferences引用。然后将所有这些添加到应用程序的视图中。
问题在于,到目前为止,我的代码一直运行良好,没有任何问题。
现在,出于某种奇怪的原因,当我启动该应用程序时,
线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffeec686fc0)
当我为创建一个变量时在线上WKPreferences。
我正在使用Xcode 10.1,Swift 4和,并且已安装Alamofire和NetworkReachability吊舱。我试过只创建WKWebView不带的WKPreferences,但错误仅移至WKWebViewConfiguration。
func createWebView() {
let preferences = WKPreferences() //<-- EXC_BAD_ACCESS
preferences.javaScriptEnabled = true
let webConfiguration = WKWebViewConfiguration()
webConfiguration.preferences = preferences
webConfiguration.allowsInlineMediaPlayback = true
webViewVar = WKWebView(frame: self.view.bounds, configuration: webConfiguration)
webViewVar.uiDelegate = self
self.view = webViewVar
}
override func loadView() {
createWebView()
}
Run Code Online (Sandbox Code Playgroud)
预期的行为是该应用程序将启动并显示代码中其他地方指定的不变的网页。实际结果是该应用程序EXC_BAD_ACCESS在启动时崩溃并显示错误。