Flutter 颤振)如何显示';onDirectionChange';Joystickview的价值?
我想使用操纵手柄(控制手柄库)并显示操纵手柄的值。 我使用了“设置状态”功能,但它不是在操纵手柄中移动内圈 我想显示移动操纵手柄时更改的值,并在以后的计算中将显示的值显示为速度值。 但是,移动操纵杆时更改的值不会显示 告诉我如何显示值。。。 请Flutter 颤振)如何显示';onDirectionChange';Joystickview的价值?,flutter,dart,powerpoint,Flutter,Dart,Powerpoint,我想使用操纵手柄(控制手柄库)并显示操纵手柄的值。 我使用了“设置状态”功能,但它不是在操纵手柄中移动内圈 我想显示移动操纵手柄时更改的值,并在以后的计算中将显示的值显示为速度值。 但是,移动操纵杆时更改的值不会显示 告诉我如何显示值。。。 请 class joystickWidget extends StatefulWidget { @override _joystickWidgetState createState() => _joystickWidgetState(); }
class joystickWidget extends StatefulWidget {
@override
_joystickWidgetState createState() => _joystickWidgetState();
}
class _joystickWidgetState extends State<joystickWidget> {
BluetoothProvider _bluetoothProvider;
String joy = "";
double _degree = 0.00;
String a ="";
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
context.read<BluetoothProvider>().bluetoothState;
});
}
sendMessageLed(){
if (buttonActive2.toString()=="true"){
_bluetoothProvider.writeData("1\r\n");
}
if (buttonActive2.toString() == "false"){
_bluetoothProvider.writeData("2\r\n");
}
}
sendMessageBuzzer(){
if (buttonActive1.toString()=="true"){
_bluetoothProvider.writeData("3\r\n");
}
if (buttonActive1.toString() == "false"){
_bluetoothProvider.writeData("4\r\n");
}
}
_dataCallBack(data) {
setState(() {
a = data.toStringAsFixed(2);
});
}
JoystickDirectionCallback onDirectionChanged(double degrees,double distance) {
joy = "${degrees.toStringAsFixed(2)},${distance.toStringAsFixed(2)}";
print(joy);
_degree = degrees;
//_dataCallBack(_degree);
}
@override
Widget build(BuildContext context) {
_bluetoothProvider = Provider.of<BluetoothProvider>(context,listen:false);
return Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children:<Widget> [
Row(
children:<Widget> [
mainAxisAlignment: MainAxisAlignment.center,
children:<Widget> [
Row(
children:<Widget> [
Text("$a"),
],
)
],
),
SizedBox(height: 50,),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Row(
children: <Widget>[
JoystickView(
onDirectionChanged: (degree, direction) {
_dataCallBack(degree);
},
iconsColor: Colors.indigoAccent,
backgroundColor: Colors.white,
innerCircleColor: Colors.indigoAccent,
opacity: 0.8,
size: 350,),
]
)
],
),
],
);
}
}
类joystickWidget扩展StatefulWidget{
@凌驾
_joystickWidgetState createState()=>\u joystickWidgetState();
}
类joystickWidgetState扩展了状态{
蓝牙提供商(BluetoothProvider);;
字符串joy=“”;
双度=0.00;
字符串a=“”;
void initState(){
super.initState();
WidgetsBinding.instance.addPostFrameCallback((){
context.read().bluetoothState;
});
}
sendMessageLed(){
如果(buttonActive2.toString()=“true”){
_bluetoothProvider.writeData(“1\r\n”);
}
if(buttonActive2.toString()=“false”){
_bluetoothProvider.writeData(“2\r\n”);
}
}
SendMessage蜂鸣器(){
if(buttonActiv1.toString()=“true”){
_bluetoothProvider.writeData(“3\r\n”);
}
if(buttonActiv1.toString()=“false”){
_bluetoothProvider.writeData(“4\r\n”);
}
}
_数据回调(数据){
设置状态(){
a=数据。ToStringsGasFixed(2);
});
}
JoystickDirectionCallback onDirectionChanged(双度,双距离){
joy=“${degrees.toStringAsFixed(2)},${distance.toStringAsFixed(2)}”;
印刷(joy);
_度=度;
//_数据回调(_度);
}
@凌驾
小部件构建(构建上下文){
_bluetoothProvider=Provider.of(上下文,侦听:false);
返回列(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
划船(
儿童:[
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
划船(
儿童:[
正文(“$a”),
],
)
],
),
尺寸箱(高度:50,),
划船(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
划船(
儿童:[
乔伊斯蒂克维(
onDirectionChanged:(度、方向){
_数据回调(度);
},
iconColor:Colors.indigoAccent,
背景颜色:Colors.white,
innerCircleColor:Colors.indigoAccent,
不透明度:0.8,
尺寸:350),,
]
)
],
),
],
);
}
}
您可以通过变量获取度和距离的值。为此,您必须在有状态或无状态小部件上方声明两个变量,然后您可以在应用程序的任何位置使用这些变量。以下是示例:
import 'package:flutter/material.dart';
import 'package:control_pad/control_pad.dart';
void main() {
runApp(ExampleApp());
}
class ExampleApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Control Pad Example',
home: HomePage(),
);
}
}
double varDegress;
double varDistance;
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Control Pad Example'),
),
body: Container(
child: JoystickView(
onDirectionChanged: (double degrees, double distanceFromCenter) {
varDegress = degress;
varDistance = distanceFromCenter;
},
),
),
);
}
}
您可能需要更改问题的标签。这与PowerPoint的关系并不明显;添加更合适的标签将帮助其他人找到您的问题,这些人可能会更好地回答您的问题。谢谢您的回答。您的意思是我应该将joystickview小部件称为无状态和有状态小部件?不,我是说没关系。请先使用示例代码。然后您可以为自己定制。代码给出了您想要的。