Flutter にネイティブの Android アクティビティを実装することができました。コードは次のようになります。
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class Communication extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyCommunication();
}
}
class MyCommunication extends State<Communication> {
static const platform = const MethodChannel("test_activity");
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: FutureBuilder<Widget>(
future: getNewActivity(),
builder: (BuildContext context, AsyncSnapshot<Widget> snapshot) {
if (snapshot.hasData)
return snapshot.data;
else
return Container(child: CircularProgressIndicator());
}),
));
}
Future<Widget> getNewActivity() async {
try {
return await platform.invokeMethod('startNewActivity');
} on PlatformException catch (e) {
print(e.message);
}
}
}
問題は、ネイティブ アクティビティから [戻る] ボタンをタップして表示された画面に移動すると、snapshot.hasData が false の場合に返される円形の進行状況インジケーターを含むコンテナーがアプリに表示されることです。
この画面を閉じて、目的のプレゼンテーション ビューに移動するには、[戻る] をもう一度タップする必要があります。明らかに、コードで正しく行っていないことがあります。どうすればこれを修正できますか?