当按下后退按钮时,将应用程序发送到后台的抖动代码。我想最小化的应用程序的背景,当我点击返回按钮一样,主页按钮的应用程序,现在当我点击返回按钮,它杀死了应用程序。我正在使用willPopScope让它工作,但没有帮助
rta7y2nd1#
我在pub.dev上找到了这个软件包,它对我来说很好用,而且很容易使用https://pub.dev/packages/move_to_background
2w3kk1z52#
03.2020更新
正如@user1717750所写的-dart代码保持不变,所以它是:
var _androidAppRetain = MethodChannel("android_app_retain"); @override Widget build(BuildContext context) { return WillPopScope( onWillPop: () { if (Platform.isAndroid) { if (Navigator.of(context).canPop()) { return Future.value(true); } else { _androidAppRetain.invokeMethod("sendToBackground"); return Future.value(false); } } else { return Future.value(true); } }, child: Scaffold( ... ), ); }
字符串MainActivity()中的代码应该如下所示:
class MainActivity: FlutterActivity() { override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine); MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "android_app_retain").apply { setMethodCallHandler { method, result -> if (method.method == "sendToBackground") { moveTaskToBack(true) } } } } }
型
t1rydlwq3#
从这里:https://medium.com/stuart-engineering/%EF%B8%8F-the-tricky-task-of-keeping-flutter-running-on-android-2d51bbc60882模板代码:
class MainActivity : FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) MethodChannel(flutterView, "android_app_retain").apply { setMethodCallHandler { method, result -> if (method.method == "sendToBackground") { moveTaskToBack(true) } } } } }
字符串您的 dart 代码:
Widget build(BuildContext context) { return WillPopScope( onWillPop: () { if (Platform.isAndroid) { if (Navigator.of(context).canPop()) { return Future.value(true); } else { _androidAppRetain.invokeMethod("sendToBackground"); return Future.value(false); } } else { return Future.value(true); } }, child: Scaffold( drawer: MainDrawer(), body: Stack( children: <Widget>[ GoogleMap(), ], ), ), ); }
型作者:Sergi Castellsagué Millán
hmtdttj44#
07.2023更新
@Muscler回答:平台代码(Kotlin)再次更改:
import androidx.annotation.NonNull import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.common.MethodChannel class MainActivity: FlutterActivity() { override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "android_app_retain").apply { setMethodCallHandler { method, result -> if (method.method == "sendToBackground") { moveTaskToBack(true) } } } } }
字符串如果它再次改变,你应该看看flutter文档:https://docs.flutter.dev/platform-integration/platform-channels?tab=android-channel-kotlin-tabdart代码还是一样的,所以是:
4条答案
按热度按时间rta7y2nd1#
我在pub.dev上找到了这个软件包,它对我来说很好用,而且很容易使用
https://pub.dev/packages/move_to_background
2w3kk1z52#
03.2020更新
正如@user1717750所写的-dart代码保持不变,所以它是:
字符串
MainActivity()中的代码应该如下所示:
型
t1rydlwq3#
从这里:https://medium.com/stuart-engineering/%EF%B8%8F-the-tricky-task-of-keeping-flutter-running-on-android-2d51bbc60882
模板代码:
字符串
您的 dart 代码:
型
作者:Sergi Castellsagué Millán
hmtdttj44#
07.2023更新
@Muscler回答:
平台代码(Kotlin)再次更改:
字符串
如果它再次改变,你应该看看flutter文档:https://docs.flutter.dev/platform-integration/platform-channels?tab=android-channel-kotlin-tab
dart代码还是一样的,所以是:
型