我使用 MethodChannel 完成了颤振与本机代码之间的通信。它在颤振到本机之间的桥梁已经完成,但是当我尝试将本机屏幕重定向到颤振屏幕时,它不会重定向。我正在使用 Navigator 推送方法来重定向屏幕。请检查以下代码:
class MyHomePage extends StatelessWidget {
BuildContext mcontext;
static const platform = const MethodChannel(
'flutter.rortega.com.basicchannelcommunication');
final String title;
MyHomePage({Key key, this.title}) : super(key: key) {
platform.setMethodCallHandler(_handleMethod);
}
@override
Widget build(BuildContext context) {
mcontext = context;
return new Scaffold(
appBar: new AppBar(
title: new Text(title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new RaisedButton(
child: new Text('Show native view'),
onPressed: _showNativeView,
),
],
),
),
);
}
Future<Null> _showNativeView() async {
await platform.invokeMethod('showNativeView', {"text": "Maulik"});
}
Future<dynamic> _handleMethod(MethodCall call) async {
switch (call.method) {
case "message":
String alice = call.arguments['message'];
print(alice);
pushPreviewScreen(mcontext);
}
}
pushPreviewScreen(BuildContext mcontext) {
print("calledFunction::");
Navigator.push(
mcontext,
MaterialPageRoute(builder: (context) => SecondScreen()),
);
}
}
这里“calledFunction::”在控制台中打印,但在 SecondScreen() 中不重定向。