// 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 handlerCompleter = Completer(); Future handleMessage(String? message) async { final DataHandler handler = await handlerCompleter.future; return handler(message); } } FutureDataHandler driverDataHandler = FutureDataHandler(); MethodChannel channel = const MethodChannel('verified_input_test'); Future onMethodChannelCall(MethodCall call) { switch (call.method) { // Android side is notifying us of the result of verifying the input // event. case 'notify_verified_input': final bool result = call.arguments as bool; // FlutterDriver handler, note that this captures the notification // value delivered via the method channel. Future 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.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', ) )); } }