diff --git a/plugin_tutorial/go-plugin-example/complex/main.go b/plugin_tutorial/go-plugin-example/complex/main.go index 34cc90e..914d22c 100644 --- a/plugin_tutorial/go-plugin-example/complex/main.go +++ b/plugin_tutorial/go-plugin-example/complex/main.go @@ -21,6 +21,7 @@ func (p *Example) InitPlugin(messenger plugin.BinaryMessenger) error { p.channel = plugin.NewMethodChannel(messenger, "instance.id/go/data", plugin.StandardMethodCodec{}) p.channel.HandleFunc("getData", getRemotesFunc) + p.channel.HandleFunc("getError", getErrorFunc) p.channel.CatchAllHandleFunc(p.catchAllTest) return nil @@ -64,3 +65,7 @@ func getRemotesFunc(arguments interface{}) (reply interface{}, err error) { return sectionList, nil } + +func getErrorFunc(arguments interface{}) (reply interface{}, err error) { + return nil, plugin.NewError("customErrorCode", errors.New("Some error")) +} diff --git a/plugin_tutorial/lib/main_desktop.dart b/plugin_tutorial/lib/main_desktop.dart index 979b40b..7103e40 100644 --- a/plugin_tutorial/lib/main_desktop.dart +++ b/plugin_tutorial/lib/main_desktop.dart @@ -21,26 +21,38 @@ void main() async { print(batteryLevel); }); - // A more complicated plugin - // - test('Test StandardMethodCodec array of map', () async { + group('Complex plugin', () { const platform_complex_structure = const MethodChannel('instance.id/go/data'); - final List result = await platform_complex_structure.invokeMethod( - 'getData', "HelloFromDart"); // passing "HelloFromDart" as an argument - expect(result, [ - {"instanceid": 1023, "pcbackup": "test", "brbackup": "test2"}, - {"instanceid": 1024, "pcbackup": "test", "brbackup": "test2"}, - {"instanceid": 1056, "pcbackup": "coucou", "brbackup": "coucou2"}, - {"instanceid": 3322, "pcbackup": "finaly", "brbackup": "finaly2"} - ]); - - // golang can return the random methodName - final String methodName = 'test/' + new Random().nextInt(100000).toString(); - final String resultPathPrefix = - await platform_complex_structure.invokeMethod(methodName); - expect(resultPathPrefix, methodName); + // A more complicated plugin + test('Test StandardMethodCodec array of map', () async { + final List result = + await platform_complex_structure.invokeMethod('getData', + "HelloFromDart"); // passing "HelloFromDart" as an argument + expect(result, [ + {"instanceid": 1023, "pcbackup": "test", "brbackup": "test2"}, + {"instanceid": 1024, "pcbackup": "test", "brbackup": "test2"}, + {"instanceid": 1056, "pcbackup": "coucou", "brbackup": "coucou2"}, + {"instanceid": 3322, "pcbackup": "finaly", "brbackup": "finaly2"} + ]); + + // golang can return the random methodName + final String methodName = + 'test/' + new Random().nextInt(100000).toString(); + final String resultPathPrefix = + await platform_complex_structure.invokeMethod(methodName); + expect(resultPathPrefix, methodName); + }); + + test('Custom errors', () async { + var matcher = predicate( + (e) => e is PlatformException && e.code == "customErrorCode"); + expect( + platform_complex_structure.invokeMethod('getError'), + throwsA(matcher), + ); + }); }); tearDownAll(() async {