- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 Flutter 写一个 App,但最近我总是得到一个 Unimplemented handling of missing static target
.
我在物理 Android 设备上运行该应用程序,因为我需要通过蓝牙进行通信,而在模拟器中设置似乎有点棘手。
我在这里看到了一些存在相同问题的问题,但没有人真正解释那里发生了什么,以及如何避免它,只发布了一些试错解决方案。
我在运行过程中的错误和输出:
Launching lib\main.dart on K00C in debug mode...
Running Gradle task 'assembleDebug'...
E/DartVM (17171): vm-service: Error: Unhandled exception:
E/DartVM (17171): Unimplemented handling of missing static target
E/DartVM (17171): #0 serviceAuthToken (dart:_vmservice:44:33)
E/DartVM (17171): #1 serviceAuthToken (dart:_vmservice:44:14)
E/DartVM (17171): #2 Server.serverAddress (dart:vmservice_io/server.dart:164:40)
E/DartVM (17171): #3 Server.startup (dart:vmservice_io/server.dart:432:44)
E/DartVM (17171): <asynchronous suspension>
E/DartVM (17171): #4 main (dart:vmservice_io:262:12)
E/DartVM (17171):
E/flutter (17171): [ERROR:flutter/runtime/dart_isolate.cc(915)] Unhandled exception:
E/flutter (17171): Unimplemented handling of missing static target
E/flutter (17171): #0 serviceAuthToken (dart:_vmservice:44:33)
E/flutter (17171): #1 serviceAuthToken (dart:_vmservice:44:14)
E/flutter (17171): #2 Server.serverAddress (dart:vmservice_io/server.dart:164:40)
E/flutter (17171): #3 Server.startup (dart:vmservice_io/server.dart:432:44)
E/flutter (17171): <asynchronous suspension>
E/flutter (17171): #4 main (dart:vmservice_io:262:12)
√ Built build\app\outputs\apk\debug\app-debug.apk.
Debug service listening on ws://127.0.0.1:63455/6QCnX6crt0s=/ws
Syncing files to device K00C...
I/dalvikvm(17626): Could not find method android.content.Context.createDeviceProtectedStorageContext, referenced from method androidx.core.content.ContextCompat.createDeviceProtectedStorageContext
W/dalvikvm(17626): VFY: unable to resolve virtual method 365: Landroid/content/Context;.createDeviceProtectedStorageContext ()Landroid/content/Context;
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.getCodeCacheDir, referenced from method androidx.core.content.ContextCompat.getCodeCacheDir
W/dalvikvm(17626): VFY: unable to resolve virtual method 372: Landroid/content/Context;.getCodeCacheDir ()Ljava/io/File;
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.getColor, referenced from method androidx.core.content.ContextCompat.getColor
W/dalvikvm(17626): VFY: unable to resolve virtual method 373: Landroid/content/Context;.getColor (I)I
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.getColorStateList, referenced from method androidx.core.content.ContextCompat.getColorStateList
W/dalvikvm(17626): VFY: unable to resolve virtual method 374: Landroid/content/Context;.getColorStateList (I)Landroid/content/res/ColorStateList;
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.getDataDir, referenced from method androidx.core.content.ContextCompat.getDataDir
W/dalvikvm(17626): VFY: unable to resolve virtual method 376: Landroid/content/Context;.getDataDir ()Ljava/io/File;
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.getDrawable, referenced from method androidx.core.content.ContextCompat.getDrawable
W/dalvikvm(17626): VFY: unable to resolve virtual method 378: Landroid/content/Context;.getDrawable (I)Landroid/graphics/drawable/Drawable;
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.getNoBackupFilesDir, referenced from method androidx.core.content.ContextCompat.getNoBackupFilesDir
W/dalvikvm(17626): VFY: unable to resolve virtual method 386: Landroid/content/Context;.getNoBackupFilesDir ()Ljava/io/File;
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.getSystemService, referenced from method androidx.core.content.ContextCompat.getSystemService
W/dalvikvm(17626): VFY: unable to resolve virtual method 393: Landroid/content/Context;.getSystemService (Ljava/lang/Class;)Ljava/lang/Object;
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.getSystemServiceName, referenced from method androidx.core.content.ContextCompat.getSystemServiceName
W/dalvikvm(17626): VFY: unable to resolve virtual method 395: Landroid/content/Context;.getSystemServiceName (Ljava/lang/Class;)Ljava/lang/String;
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.isDeviceProtectedStorage, referenced from method androidx.core.content.ContextCompat.isDeviceProtectedStorage
W/dalvikvm(17626): VFY: unable to resolve virtual method 398: Landroid/content/Context;.isDeviceProtectedStorage ()Z
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
I/dalvikvm(17626): Could not find method android.content.Context.startForegroundService, referenced from method androidx.core.content.ContextCompat.startForegroundService
W/dalvikvm(17626): VFY: unable to resolve virtual method 411: Landroid/content/Context;.startForegroundService (Landroid/content/Intent;)Landroid/content/ComponentName;
D/dalvikvm(17626): VFY: replacing opcode 0x6e at 0x0006
F/libc (17626): Fatal signal 11 (SIGSEGV) at 0x2bc9ce80 (code=1), thread 17726 (utter_bluetooth)
process stopped due to unexpected signal 27
Lost connection to device.
Could not update files on device: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:63455/6QCnX6crt0s=/
// For performing some operations asynchronously
import 'dart:async';
import 'dart:convert';
import 'dart:typed_data';
// For using PlatformException
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bluetooth_serial/flutter_bluetooth_serial.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: BluetoothApp(),
);
}
}
class BluetoothApp extends StatefulWidget {
@override
_BluetoothAppState createState() => _BluetoothAppState();
}
class _BluetoothAppState extends State<BluetoothApp> {
// Initializing the Bluetooth connection state to be unknown
BluetoothState _bluetoothState = BluetoothState.UNKNOWN;
// Initializing a global key, as it would help us in showing a SnackBar later
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
// Get the instance of the Bluetooth
FlutterBluetoothSerial _bluetooth = FlutterBluetoothSerial.instance;
// Track the Bluetooth connection with the remote device
BluetoothConnection connection;
int _deviceState;
bool isDisconnecting = false;
Map<String, Color> colors = {
'onBorderColor': Colors.green,
'offBorderColor': Colors.red,
'neutralBorderColor': Colors.transparent,
'onTextColor': Colors.green[700],
'offTextColor': Colors.red[700],
'neutralTextColor': Colors.blue,
};
// To track whether the device is still connected to Bluetooth
bool get isConnected => connection != null && connection.isConnected;
// Define some variables, which will be required later
List<BluetoothDevice> _devicesList = [];
BluetoothDevice _device;
bool _connected = false;
bool _isButtonUnavailable = false;
@override
void initState() {
super.initState();
// Get current state
FlutterBluetoothSerial.instance.state.then((state) {
setState(() {
_bluetoothState = state;
});
});
_deviceState = 0; // neutral
// If the bluetooth of the device is not enabled,
// then request permission to turn on bluetooth
// as the app starts up
enableBluetooth();
// Listen for further state changes
FlutterBluetoothSerial.instance
.onStateChanged()
.listen((BluetoothState state) {
setState(() {
_bluetoothState = state;
if (_bluetoothState == BluetoothState.STATE_OFF) {
_isButtonUnavailable = true;
}
getPairedDevices();
});
});
}
@override
void dispose() {
// Avoid memory leak and disconnect
if (isConnected) {
isDisconnecting = true;
connection.dispose();
connection = null;
}
super.dispose();
}
// Request Bluetooth permission from the user
Future<void> enableBluetooth() async {
// Retrieving the current Bluetooth state
_bluetoothState = await FlutterBluetoothSerial.instance.state;
// If the bluetooth is off, then turn it on first
// and then retrieve the devices that are paired.
if (_bluetoothState == BluetoothState.STATE_OFF) {
await FlutterBluetoothSerial.instance.requestEnable();
await getPairedDevices();
return true;
} else {
await getPairedDevices();
}
return false;
}
// For retrieving and storing the paired devices
// in a list.
Future<void> getPairedDevices() async {
List<BluetoothDevice> devices = [];
// To get the list of paired devices
try {
devices = await _bluetooth.getBondedDevices();
} on PlatformException {
print("Error");
}
// It is an error to call [setState] unless [mounted] is true.
if (!mounted) {
return;
}
// Store the [devices] list in the [_devicesList] for accessing
// the list outside this class
setState(() {
_devicesList = devices;
});
}
// Now, its time to build the UI
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
key: _scaffoldKey,
appBar: AppBar(
title: Text("Flutter Bluetooth"),
backgroundColor: Colors.deepPurple,
actions: <Widget>[
FlatButton.icon(
icon: Icon(
Icons.refresh,
color: Colors.white,
),
label: Text(
"Refresh",
style: TextStyle(
color: Colors.white,
),
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
),
splashColor: Colors.deepPurple,
onPressed: () async {
// So, that when new devices are paired
// while the app is running, user can refresh
// the paired devices list.
await getPairedDevices().then((_) {
show('Device list refreshed');
});
},
),
],
),
body: Container(
child: Column(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Visibility(
visible: _isButtonUnavailable &&
_bluetoothState == BluetoothState.STATE_ON,
child: LinearProgressIndicator(
backgroundColor: Colors.yellow,
valueColor: AlwaysStoppedAnimation<Color>(Colors.red),
),
),
Padding(
padding: const EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Expanded(
child: Text(
'Enable Bluetooth',
style: TextStyle(
color: Colors.black,
fontSize: 16,
),
),
),
Switch(
value: _bluetoothState.isEnabled,
onChanged: (bool value) {
future() async {
if (value) {
await FlutterBluetoothSerial.instance
.requestEnable();
} else {
await FlutterBluetoothSerial.instance
.requestDisable();
}
await getPairedDevices();
_isButtonUnavailable = false;
if (_connected) {
_disconnect();
}
}
future().then((_) {
setState(() {});
});
},
)
],
),
),
Stack(
children: <Widget>[
Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 10),
child: Text(
"PAIRED DEVICES",
style: TextStyle(fontSize: 24, color: Colors.blue),
textAlign: TextAlign.center,
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
'Device:',
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
DropdownButton(
items: _getDeviceItems(),
onChanged: (value) =>
setState(() => _device = value),
value: _devicesList.isNotEmpty ? _device : null,
),
RaisedButton(
onPressed: _isButtonUnavailable
? null
: _connected ? _disconnect : _connect,
child:
Text(_connected ? 'Disconnect' : 'Connect'),
),
],
),
),
Padding(
padding: const EdgeInsets.all(16.0),
child: Card(
shape: RoundedRectangleBorder(
side: new BorderSide(
color: _deviceState == 0
? colors['neutralBorderColor']
: _deviceState == 1
? colors['onBorderColor']
: colors['offBorderColor'],
width: 3,
),
borderRadius: BorderRadius.circular(4.0),
),
elevation: _deviceState == 0 ? 4 : 0,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: <Widget>[
Expanded(
child: Text(
"DEVICE 1",
style: TextStyle(
fontSize: 20,
color: _deviceState == 0
? colors['neutralTextColor']
: _deviceState == 1
? colors['onTextColor']
: colors['offTextColor'],
),
),
),
FlatButton(
onPressed: _connected
? _sendOnMessageToBluetooth
: null,
child: Text("ON"),
),
FlatButton(
onPressed: _connected
? _sendSerMessageToBluetooth
: null,
child: Text("OFF"),
),
],
),
),
),
),
],
),
Container(
color: Colors.blue,
),
],
),
Expanded(
child: Padding(
padding: const EdgeInsets.all(20),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"NOTE: If you cannot find the device in the list, please pair the device by going to the bluetooth settings",
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: Colors.red,
),
),
SizedBox(height: 15),
RaisedButton(
elevation: 2,
child: Text("Bluetooth Settings"),
onPressed: () {
FlutterBluetoothSerial.instance.openSettings();
},
),
],
),
),
),
)
],
),
),
),
);
}
// Create the List of devices to be shown in Dropdown Menu
List<DropdownMenuItem<BluetoothDevice>> _getDeviceItems() {
List<DropdownMenuItem<BluetoothDevice>> items = [];
if (_devicesList.isEmpty) {
items.add(DropdownMenuItem(
child: Text('NONE'),
));
} else {
_devicesList.forEach((device) {
items.add(DropdownMenuItem(
child: Text(device.name),
value: device,
));
});
}
return items;
}
// Method to connect to bluetooth
void _connect() async {
setState(() {
_isButtonUnavailable = true;
});
if (_device == null) {
show('No device selected');
} else {
if (!isConnected) {
await BluetoothConnection.toAddress(_device.address)
.then((_connection) {
print('Connected to the device');
connection = _connection;
setState(() {
_connected = true;
});
connection.input.listen(_onDataReceived).onDone(() {
if (isDisconnecting) {
print('Disconnecting locally!');
} else {
print('Disconnected remotely!');
}
if (this.mounted) {
setState(() {});
}
});
}).catchError((error) {
print('Cannot connect, exception occurred');
print(error);
});
show('Device connected');
setState(() => _isButtonUnavailable = false);
}
}
}
void _onDataReceived(Uint8List data) {
// Allocate buffer for parsed data
print(data);
int backspacesCounter = 0;
data.forEach((byte) {
if (byte == 8 || byte == 127) {
backspacesCounter++;
}
});
Uint8List buffer = Uint8List(data.length - backspacesCounter);
int bufferIndex = buffer.length;
// Apply backspace control character
backspacesCounter = 0;
for (int i = data.length - 1; i >= 0; i--) {
if (data[i] == 8 || data[i] == 127) {
backspacesCounter++;
} else {
if (backspacesCounter > 0) {
backspacesCounter--;
} else {
buffer[--bufferIndex] = data[i];
}
}
}
}
// Method to disconnect bluetooth
void _disconnect() async {
setState(() {
_isButtonUnavailable = true;
_deviceState = 0;
});
await connection.close();
show('Device disconnected');
if (!connection.isConnected) {
setState(() {
_connected = false;
_isButtonUnavailable = false;
});
}
}
// Method to send message,
// for turning the Bluetooth device on
void _sendOnMessageToBluetooth() async {
connection.output.add(utf8.encode("1" + "\r\n"));
await connection.output.allSent;
show('Device Turned On');
setState(() {
_deviceState = 1; // device on
});
}
// Method to send message,
// for turning the Bluetooth device off
void _sendSerMessageToBluetooth() async {
connection.output.add(Uint8List.fromList([32, 33]));
await connection.output.allSent;
show('Device Turned Off');
setState(() {
_deviceState = -1; // device off
});
}
// Method to show a Snackbar,
// taking message as the text
Future show(
String message, {
Duration duration: const Duration(seconds: 3),
}) async {
await new Future.delayed(new Duration(milliseconds: 100));
_scaffoldKey.currentState.showSnackBar(
new SnackBar(
content: new Text(
message,
),
duration: duration,
),
);
}
}
void _onDataReceived(Uint8List data) {
// Allocate buffer for parsed data
int backspacesCounter = 0;
data.forEach((byte) {
if (byte == 8 || byte == 127) {
backspacesCounter++;
}
});
Uint8List buffer = Uint8List(data.length - backspacesCounter); //
int bufferIndex = buffer.length;
// Apply backspace control character
backspacesCounter = 0;
for (int i = data.length - 1; i >= 0; i--) {
if (data[i] == 8 || data[i] == 127) {
backspacesCounter++;
} else {
if (backspacesCounter > 0) {
backspacesCounter--;
} else {
buffer[--bufferIndex] = data[i];
}
}
}
// Create message if there is new line character
String dataString = String.fromCharCodes(buffer);
}
最佳答案
在 IDE 的终端上:
flutter 干净
并重建项目。
这个错误是在构建没有插件的情况下发生的,并且构建后无法同步文件,因为初始热重载只能同步dart文件,而您的库依赖于 native 文件(java/kotlin/swift/objc) 然后methodchannel响应“未实现”
关于Flutter 缺少静态目标的未实现处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61287092/
对于 Metal ,如果对主纹理进行 mipmap 处理,是否还需要对多采样纹理进行 mipmap 处理?我阅读了苹果文档,但没有得到任何相关信息。 最佳答案 Mipmapping 适用于您将从中
我正在使用的代码在后端 Groovy 代码中具有呈现 GSP(Groovy 服务器页面)的 Controller 。对于前端,我们使用 React-router v4 来处理路由。我遇到的问题是,通过
我们正在 build 一个巨大的网站。我们正在考虑是在服务器端(ASP .Net)还是在客户端进行 HTML 处理。 例如,我们有 HTML 文件,其作用类似于用于生成选项卡的模板。服务器端获取 HT
我正在尝试将图像加载到 void setup() 中的数组中,但是当我这样做时出现此错误:“类型不匹配,'processing .core.PImage' does not匹配“processing.
我正在尝试使用其私有(private)应用程序更新 Shopify 上的客户标签。我用 postman 尝试过,一切正常,但通过 AJAX,它带我成功回调而不是错误,但成功后我得到了身份验证链接,而不
如何更改我的 Processing appIconTest.exe 导出的默认图标在窗口中的应用程序? 默认一个: 最佳答案 经过一些研究,我能找到的最简单的解决方案是: 进入 ...\process
我在 Processing 中做了一个简单的小游戏,但需要一些帮助。我有一个 mp3,想将它添加到我的应用程序中,以便在后台循环运行。 这可能吗?非常感谢。 最佳答案 您可以使用声音库。处理已经自带
我有几个这样创建的按钮: 在 setup() PImage[] imgs1 = {loadImage("AREA1_1.png"),loadImage("AREA1_2.png"),loadImage
我正在尝试使用 Processing 创建一个多人游戏,但无法弄清楚如何将屏幕分成两个以显示玩家的不同情况? 就像在 c# 中一样,我们有Viewport leftViewport,rightView
我一直在尝试使用 Moore 邻域在处理过程中创建元胞自动机,到目前为止非常成功。我已经设法使基本系统正常工作,现在我希望通过添加不同的功能来使用它。现在,我检查细胞是否存活。如果是,我使用 fill
有没有办法用 JavaScript 代码检查资源使用情况?我可以检查脚本的 RAM 使用情况和 CPU 使用情况吗? 由于做某事有多种方法,我可能会使用不同的方法编写代码,并将其保存为两个不同的文件,
我想弄清楚如何处理这样的列表: [ [[4,6,7], [1,2,4,6]] , [[10,4,2,4], [1]] ] 这是一个整数列表的列表 我希望我的函数将此列表作为输入并返回列表中没有重复的整
有没有办法在不需要时处理 MethodChannel/EventChannel ?我问是因为我想为对象创建多个方法/事件 channel 。 例子: class Call { ... fields
我有一个关于在 Python3 中处理 ConnectionResetError 的问题。这通常发生在我使用 urllib.request.Request 函数时。我想知道如果我们遇到这样的错误是否可
我一直在努力解决这个问题几个小时,但无济于事。代码很简单,一个弹跳球(粒子)。将粒子的速度初始化为 (0, 0) 将使其保持上下弹跳。将粒子的初始化速度更改为 (0, 0.01) 或任何十进制浮点数都
我把自己弄得一团糟。 我想在我的系统中添加 python3.6 所以我决定在我的 Ubuntu 19.10 中卸载现有的。但是现在每次我想安装一些东西我都会得到这样的错误: dpkg: error w
我正在努力解决 Rpart 包中的 NA 功能。我得到了以下数据框(下面的代码) Outcome VarA VarB 1 1 1 0 2 1 1 1
我将 Java 与 JSF 一起使用,这是 Glassfish 3 容器。 在我的 Web 应用程序中,我试图实现一个文件(图像)管理系统。 我有一个 config.properties我从中读取上传
所以我一直在Processing工作几个星期以来,虽然我没有编程经验,但我已经转向更复杂的项目。我正在编写一个进化模拟器,它会产生具有随机属性的生物。 最终,我将添加复制,但现在这些生物只是在屏幕上漂
有人知道 Delphi 2009 对“with”的处理有什么不同吗? 我昨天解决了一个问题,只是将“with”解构为完整引用,如“with Datamodule、Dataset、MainForm”。
我是一名优秀的程序员,十分优秀!