【发布时间】:2021-10-04 08:00:49
【问题描述】:
我通过网络套接字传递数据,然后将此数据写入变量“weightSO”。一切正常。但我想添加一个解密功能。也就是说,数据来了,我解密它们,然后显示。但是“weightRT = await FlutterAesEcbPkcs5.decryptString (weightSO, key);”这行有问题。问题“await 表达式只能在异步函数中使用。尝试使用 'async' 或 'async *' 标记主体函数。” (加密后我已经显示了变量 weightRT 的数据)。而且我不能用这个错误解决这个问题,我会很感激你的帮助。
socketData() async {
Socket socket = await Socket.connect('192.168.0.1', 4005);
print('connected');
// send 0
socket.add(utf8.encode('0'));
socket.listen((List<int> event) {
setState(() {
weightSO = utf8.decode(event);
// data decryption
var key = '11111';
weightRT = await FlutterAesEcbPkcs5.decryptString(weightSO, key);
});
print(utf8.decode(event));
});
weightRT = await FlutterAesEcbPkcs5.decryptString(utf8.decode(event), key);
socket.add(utf8.encode('0'));
await Future.delayed(Duration(seconds: 300));
socket.close();
}
}
我的小部件:
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
SizedBox(height: 35.0),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
FlatButton(
disabledColor: Colors.pink,
textColor: Colors.blueGrey,
color: Colors.transparent,
child: Text('Weight', textScaleFactor: 2),
onPressed:
getWeight,
padding: EdgeInsets.fromLTRB(30.0, 10.0, 30, 10.0),
),
],
),
Container(
child: Text(('$weightSO' ), style: TextStyle(fontSize: 45.0, color: Colors.blueGrey)),
padding: EdgeInsets.fromLTRB(0, 0.0, 0, 20.0),
),
]),
);
}
【问题讨论】:
-
你也可以让你的监听异步,并可以把它放在等待,这样它就可以轻松地等待
-
@MuhammadArbazZafar 究竟如何??我只是一个初学者,不太明白我们的意思。我试过了,但没有帮助。 "setState() 异步 {"
-
并删除你的setstate,你不需要放置setstate
-
@MuhammadArbazZafar 如果我删除它,我在小部件中显示的变量“weightSO”中的数据将不会更新
-
@MuhammadArbazZafar 我改变了我的问题,添加了一个显示数据的小部件