Skip to content

Commit 0d92794

Browse files
[pigeon] Enable example app build in CI (#8119)
Removes example/pubspec.yaml, which is no longer needed since the excerpt system was rewritten not to use `build_runner`, so that the repo tooling recognizes `example/app/` as the actual example, enabling all the standard CI steps (build example for each platform, run integration test, etc.) to run for it.
1 parent e95f6d8 commit 0d92794

File tree

6 files changed

+73
-45
lines changed

6 files changed

+73
-45
lines changed

packages/pigeon/example/README.md

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ class PigeonApiImplementation : public ExampleHostApi {
185185
}
186186
void SendMessage(const MessageData& message,
187187
std::function<void(ErrorOr<bool> reply)> result) {
188-
if (message.code == Code.kOne) {
188+
if (message.code() == Code::kOne) {
189189
result(FlutterError("code", "message", "details"));
190190
return;
191191
}
@@ -281,10 +281,10 @@ private class PigeonFlutterApi {
281281
}
282282

283283
func callFlutterMethod(
284-
aString aStringArg: String?, completion: @escaping (Result<String, Error>) -> Void
284+
aString aStringArg: String?, completion: @escaping (Result<String, PigeonError>) -> Void
285285
) {
286286
flutterAPI.flutterMethod(aString: aStringArg) {
287-
completion(.success($0))
287+
completion($0)
288288
}
289289
}
290290
}
@@ -294,16 +294,15 @@ private class PigeonFlutterApi {
294294

295295
<?code-excerpt "android/app/src/main/kotlin/dev/flutter/pigeon_example_app/MainActivity.kt (kotlin-class-flutter)"?>
296296
```kotlin
297-
private class PigeonFlutterApi {
298-
297+
private class PigeonFlutterApi(binding: FlutterPlugin.FlutterPluginBinding) {
299298
var flutterApi: MessageFlutterApi? = null
300299

301-
constructor(binding: FlutterPlugin.FlutterPluginBinding) {
302-
flutterApi = MessageFlutterApi(binding.getBinaryMessenger())
300+
init {
301+
flutterApi = MessageFlutterApi(binding.binaryMessenger)
303302
}
304303

305304
fun callFlutterMethod(aString: String, callback: (Result<String>) -> Unit) {
306-
flutterApi!!.flutterMethod(aString) { echo -> callback(Result.success(echo)) }
305+
flutterApi!!.flutterMethod(aString) { echo -> callback(echo) }
307306
}
308307
}
309308
```
@@ -312,12 +311,22 @@ private class PigeonFlutterApi {
312311

313312
<?code-excerpt "windows/runner/flutter_window.cpp (cpp-method-flutter)"?>
314313
```c++
315-
void TestPlugin::CallFlutterMethod(
316-
String aString, std::function<void(ErrorOr<int64_t> reply)> result) {
317-
MessageFlutterApi->FlutterMethod(
318-
aString, [result](String echo) { result(echo); },
319-
[result](const FlutterError& error) { result(error); });
320-
}
314+
class PigeonFlutterApi {
315+
public:
316+
PigeonFlutterApi(flutter::BinaryMessenger* messenger)
317+
: flutterApi_(std::make_unique<MessageFlutterApi>(messenger)) {}
318+
319+
void CallFlutterMethod(
320+
const std::string& a_string,
321+
std::function<void(ErrorOr<std::string> reply)> result) {
322+
flutterApi_->FlutterMethod(
323+
&a_string, [result](const std::string& echo) { result(echo); },
324+
[result](const FlutterError& error) { result(error); });
325+
}
326+
327+
private:
328+
std::unique_ptr<MessageFlutterApi> flutterApi_;
329+
};
321330
```
322331
323332
### GObject

packages/pigeon/example/app/android/app/src/main/kotlin/dev/flutter/pigeon_example_app/MainActivity.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import ExampleHostApi
88
import FlutterError
99
import MessageData
1010
import MessageFlutterApi
11-
import androidx.annotation.NonNull
1211
import io.flutter.embedding.android.FlutterActivity
1312
import io.flutter.embedding.engine.FlutterEngine
1413
import io.flutter.embedding.engine.plugins.FlutterPlugin
@@ -37,22 +36,21 @@ private class PigeonApiImplementation : ExampleHostApi {
3736
// #enddocregion kotlin-class
3837

3938
// #docregion kotlin-class-flutter
40-
private class PigeonFlutterApi {
41-
39+
private class PigeonFlutterApi(binding: FlutterPlugin.FlutterPluginBinding) {
4240
var flutterApi: MessageFlutterApi? = null
4341

44-
constructor(binding: FlutterPlugin.FlutterPluginBinding) {
45-
flutterApi = MessageFlutterApi(binding.getBinaryMessenger())
42+
init {
43+
flutterApi = MessageFlutterApi(binding.binaryMessenger)
4644
}
4745

4846
fun callFlutterMethod(aString: String, callback: (Result<String>) -> Unit) {
49-
flutterApi!!.flutterMethod(aString) { echo -> callback(Result.success(echo)) }
47+
flutterApi!!.flutterMethod(aString) { echo -> callback(echo) }
5048
}
5149
}
5250
// #enddocregion kotlin-class-flutter
5351

5452
class MainActivity : FlutterActivity() {
55-
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
53+
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
5654
super.configureFlutterEngine(flutterEngine)
5755

5856
val api = PigeonApiImplementation()

packages/pigeon/example/app/ios/Runner/AppDelegate.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,16 @@ private class PigeonFlutterApi {
3737
}
3838

3939
func callFlutterMethod(
40-
aString aStringArg: String?, completion: @escaping (Result<String, Error>) -> Void
40+
aString aStringArg: String?, completion: @escaping (Result<String, PigeonError>) -> Void
4141
) {
4242
flutterAPI.flutterMethod(aString: aStringArg) {
43-
completion(.success($0))
43+
completion($0)
4444
}
4545
}
4646
}
4747
// #enddocregion swift-class-flutter
4848

49-
@UIApplicationMain
49+
@main
5050
@objc class AppDelegate: FlutterAppDelegate {
5151
override func application(
5252
_ application: UIApplication,

packages/pigeon/example/app/macos/Runner/MainFlutterWindow.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,21 @@ private class PigeonApiImplementation: ExampleHostApi {
99
func getHostLanguage() throws -> String {
1010
return "Swift"
1111
}
12+
13+
func add(_ a: Int64, to b: Int64) throws -> Int64 {
14+
if a < 0 || b < 0 {
15+
throw PigeonError(code: "code", message: "message", details: "details")
16+
}
17+
return a + b
18+
}
19+
20+
func sendMessage(message: MessageData, completion: @escaping (Result<Bool, Error>) -> Void) {
21+
if message.code == Code.one {
22+
completion(.failure(PigeonError(code: "code", message: "message", details: "details")))
23+
return
24+
}
25+
completion(.success(true))
26+
}
1227
}
1328

1429
class MainFlutterWindow: NSWindow {

packages/pigeon/example/app/windows/runner/flutter_window.cpp

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,21 @@
44

55
#include "flutter_window.h"
66

7+
#include <flutter/binary_messenger.h>
8+
79
#include <memory>
810
#include <optional>
911

1012
#include "flutter/generated_plugin_registrant.h"
1113
#include "messages.g.h"
1214

1315
namespace {
16+
using pigeon_example::Code;
1417
using pigeon_example::ErrorOr;
1518
using pigeon_example::ExampleHostApi;
19+
using pigeon_example::FlutterError;
20+
using pigeon_example::MessageData;
21+
using pigeon_example::MessageFlutterApi;
1622

1723
// #docregion cpp-class
1824
class PigeonApiImplementation : public ExampleHostApi {
@@ -29,14 +35,34 @@ class PigeonApiImplementation : public ExampleHostApi {
2935
}
3036
void SendMessage(const MessageData& message,
3137
std::function<void(ErrorOr<bool> reply)> result) {
32-
if (message.code == Code.kOne) {
38+
if (message.code() == Code::kOne) {
3339
result(FlutterError("code", "message", "details"));
3440
return;
3541
}
3642
result(true);
3743
}
3844
};
3945
// #enddocregion cpp-class
46+
47+
// #docregion cpp-method-flutter
48+
class PigeonFlutterApi {
49+
public:
50+
PigeonFlutterApi(flutter::BinaryMessenger* messenger)
51+
: flutterApi_(std::make_unique<MessageFlutterApi>(messenger)) {}
52+
53+
void CallFlutterMethod(
54+
const std::string& a_string,
55+
std::function<void(ErrorOr<std::string> reply)> result) {
56+
flutterApi_->FlutterMethod(
57+
&a_string, [result](const std::string& echo) { result(echo); },
58+
[result](const FlutterError& error) { result(error); });
59+
}
60+
61+
private:
62+
std::unique_ptr<MessageFlutterApi> flutterApi_;
63+
};
64+
// #enddocregion cpp-method-flutter
65+
4066
} // namespace
4167

4268
FlutterWindow::FlutterWindow(const flutter::DartProject& project)
@@ -49,15 +75,6 @@ bool FlutterWindow::OnCreate() {
4975
return false;
5076
}
5177

52-
// #docregion cpp-method-flutter
53-
void TestPlugin::CallFlutterMethod(
54-
String aString, std::function<void(ErrorOr<int64_t> reply)> result) {
55-
MessageFlutterApi->FlutterMethod(
56-
aString, [result](String echo) { result(echo); },
57-
[result](const FlutterError& error) { result(error); });
58-
}
59-
// #enddocregion cpp-method-flutter
60-
6178
RECT frame = GetClientArea();
6279

6380
// The size here must match the window dimensions to avoid unnecessary surface

packages/pigeon/example/pubspec.yaml

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)