[英]Flutter update UI from native method call by using setState() method
我正在使用類似這樣的平台通道從本地Android代碼中調用一種方法:
MethodChannel(flutterView, CHANNEL).invokeMethod(METHOD_NAME, null)
在我的Flutter類中,我通過使用回調platform.setMethodCallHandler(_handleNativeMethodCall)
來處理相應的方法調用platform.setMethodCallHandler(_handleNativeMethodCall)
setMethodCallHandler()
需要回調以返回Future
。 但是問題來了,我想在本機代碼調用回調時更新我的UI,所以我想使用setState()
方法。 現在的問題是, setState()
不允許在異步函數中調用,例如,一個返回Future
的函數,因此不能在本機方法調用的回調中調用。
你們中有人遇到這個問題並且可能對此有解決方案嗎? 如果無法通過此回調更新UI,那將是荒謬的。
您可以將任何方法注冊為方法調用回調,然后從那里調用setState
。
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
String myVariable;
@override
initState() {
super.initState();
myVariable = 'LOADING';
platform.setMethodCallHandler(_handleNativeMethodCall);
}
Future<dynamic> _handleNativeMethodCall(MethodCall methodCall) async {
// do some processing
setState(() {
myVariable = methodCall.method;
});
}
@override
Widget build(BuildContext context) {
return Container(child: Text(myVariable));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.