// 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:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_api_samples/widgets/editable_text/editable_text.on_content_inserted.0.dart' as example; import 'package:flutter_test/flutter_test.dart'; void main() { testWidgets('Image.memory displays inserted content', ( WidgetTester tester, ) async { await tester.pumpWidget(const example.KeyboardInsertedContentApp()); expect(find.text('Keyboard Inserted Content Sample'), findsOneWidget); await tester.tap(find.byType(EditableText)); await tester.enterText(find.byType(EditableText), 'test'); await tester.idle(); const String uri = 'content://com.google.android.inputmethod.latin.fileprovider/test.png'; const List kBlueSquarePng = [ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x32, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x3f, 0x88, 0xb1, 0x00, 0x00, 0x00, 0x48, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0xcf, 0x31, 0x0d, 0x00, 0x30, 0x08, 0x00, 0xb0, 0x61, 0x63, 0x2f, 0xfe, 0x2d, 0x61, 0x05, 0x34, 0xf0, 0x92, 0xd6, 0x41, 0x23, 0x7f, 0xf5, 0x3b, 0x20, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x36, 0x06, 0x03, 0x6e, 0x69, 0x47, 0x12, 0x8e, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, ]; final ByteData? messageBytes = const JSONMessageCodec().encodeMessage( { 'args': [ -1, 'TextInputAction.commitContent', jsonDecode( '{"mimeType": "image/png", "data": $kBlueSquarePng, "uri": "$uri"}', ), ], 'method': 'TextInputClient.performAction', }, ); try { await tester.binding.defaultBinaryMessenger.handlePlatformMessage( 'flutter/textinput', messageBytes, (ByteData? _) {}, ); } catch (_) {} await tester.pumpAndSettle(); expect(find.byType(Image), findsOneWidget); }); }