flutter) 如何从 Joystickview 显示 'onDirectionChange' 值?
flutter) How Can I display 'onDirectionChange' value from Joystickview?
我想使用joypad(控制板库)并显示joypad的值。
我用了'setState'功能,但它在游戏手柄中没有移动内圈。
我想显示当我移动手柄时变化的值,并在以后的计算中将显示的值显示为速度值。
但是,当我移动操纵杆时改变的值没有显示。
告诉我如何显示值...
请...
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,),
]
)
],
),
],
);
}
}
您可以通过变量获取度数和距离的值。为此,您必须在有状态或无状态小部件上方声明两个变量,然后您可以在应用程序的任何地方使用这些变量。这是一个示例:
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;
},
),
),
);
}
}
我想使用joypad(控制板库)并显示joypad的值。 我用了'setState'功能,但它在游戏手柄中没有移动内圈。
我想显示当我移动手柄时变化的值,并在以后的计算中将显示的值显示为速度值。 但是,当我移动操纵杆时改变的值没有显示。
告诉我如何显示值... 请...
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,),
]
)
],
),
],
);
}
}
您可以通过变量获取度数和距离的值。为此,您必须在有状态或无状态小部件上方声明两个变量,然后您可以在应用程序的任何地方使用这些变量。这是一个示例:
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;
},
),
),
);
}
}