// 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:ui'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'page.dart'; class WindowManagerIntegrationsPage extends PageWidget { const WindowManagerIntegrationsPage() : super('Window Manager Integrations Tests', const ValueKey('WmIntegrationsListTile')); @override Widget build(BuildContext context) => WindowManagerBody(); } class WindowManagerBody extends StatefulWidget { @override State createState() => WindowManagerBodyState(); } enum _LastTestStatus { pending, success, error } class WindowManagerBodyState extends State { MethodChannel viewChannel; _LastTestStatus lastTestStatus = _LastTestStatus.pending; String lastError; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Window Manager Integrations'), ), body: Column( children: [ SizedBox( height: 300, child: AndroidView( viewType: 'simple_view', onPlatformViewCreated: onPlatformViewCreated, ), ), if (lastTestStatus != _LastTestStatus.pending) _statusWidget(), if (viewChannel != null) RaisedButton( key: const ValueKey('ShowAlertDialog'), child: const Text('SHOW ALERT DIALOG'), onPressed: onShowAlertDialogPressed, ), ], ), ); } Widget _statusWidget() { assert(lastTestStatus != _LastTestStatus.pending); final String message = lastTestStatus == _LastTestStatus.success ? 'Success' : lastError; return Container( color: lastTestStatus == _LastTestStatus.success ? Colors.green : Colors.red, child: Text( message, key: const ValueKey('Status'), style: TextStyle( color: lastTestStatus == _LastTestStatus.error ? Colors.yellow : null, ), ), ); } Future onShowAlertDialogPressed() async { if (lastTestStatus != _LastTestStatus.pending) { setState(() { lastTestStatus = _LastTestStatus.pending; }); } try { await viewChannel.invokeMethod('showAndHideAlertDialog'); setState(() { lastTestStatus = _LastTestStatus.success; }); } catch(e) { setState(() { lastTestStatus = _LastTestStatus.error; lastError = '$e'; }); } } void onPlatformViewCreated(int id) { setState(() { viewChannel = MethodChannel('simple_view/$id'); }); } }