| // Copyright 2014 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| import 'dart:async'; | |
| import 'package:flutter/material.dart'; | |
| import 'package:flutter/services.dart'; | |
| import 'package:flutter_driver/driver_extension.dart'; | |
| class FutureDataHandler { | |
| final Completer<DataHandler> handlerCompleter = Completer<DataHandler>(); | |
| Future<String> handleMessage(String? message) async { | |
| final DataHandler handler = await handlerCompleter.future; | |
| return handler(message); | |
| } | |
| } | |
| FutureDataHandler driverDataHandler = FutureDataHandler(); | |
| MethodChannel channel = const MethodChannel('verified_input_test'); | |
| Future<dynamic> onMethodChannelCall(MethodCall call) { | |
| switch (call.method) { | |
| // Android side is notifying us of the result of verifying the input | |
| // event. | |
| case 'notify_verified_input': | |
| final result = call.arguments as bool; | |
| // FlutterDriver handler, note that this captures the notification | |
| // value delivered via the method channel. | |
| Future<String> handler(String? message) async { | |
| switch (message) { | |
| case 'input_was_verified': | |
| return '$result'; | |
| } | |
| return 'unknown message: "$message"'; | |
| } | |
| // Install the handler now. | |
| driverDataHandler.handlerCompleter.complete(handler); | |
| } | |
| return Future<dynamic>.value(); | |
| } | |
| void main() { | |
| enableFlutterDriverExtension(handler: driverDataHandler.handleMessage); | |
| channel.setMethodCallHandler(onMethodChannelCall); | |
| runApp(MaterialApp(home: _Home())); | |
| } | |
| class _Home extends StatelessWidget { | |
| @override | |
| Widget build(BuildContext context) { | |
| return Scaffold( | |
| appBar: AppBar( | |
| title: const Text('Verified Input Integration Test'), | |
| centerTitle: true, | |
| backgroundColor: Colors.black45, | |
| ), | |
| body: Container( | |
| padding: const EdgeInsets.all(30.0), | |
| color: Colors.black26, | |
| child: const AndroidView(key: Key('PlatformView'), viewType: 'verified-input-view'), | |
| ), | |
| ); | |
| } | |
| } |