blob: 2454e143174489901203b081222c56d04750ec41 [file] [log] [blame]
// 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.
// This file defines basic widgets for use in tests for Widgets in `flutter/widgets`.
import 'package:flutter/widgets.dart';
/// Get a color for use in a widget test.
///
/// The returned color will be fully opaque,
/// but the [Color.r], [Color.g], and [Color.b] channels
/// will vary sequentially based on index, cycling every sixth integer.
Color getTestColor(int index) {
const colors = [
Color(0xFFFF0000),
Color(0xFF00FF00),
Color(0xFF0000FF),
Color(0xFFFFFF00),
Color(0xFFFF00FF),
Color(0xFF00FFFF),
];
return colors[index % colors.length];
}
// TODO(justinmc): replace with `RawButton` or equivalent when available.
/// A very basic button for use in widget tests.
class TestButton extends StatelessWidget {
const TestButton({
required this.child,
this.focusNode,
this.autofocus = false,
this.onPressed,
super.key,
});
final bool autofocus;
final FocusNode? focusNode;
final VoidCallback? onPressed;
final Widget child;
@override
Widget build(BuildContext context) {
return Semantics(
button: true,
enabled: onPressed != null,
onTap: onPressed,
child: FocusableActionDetector(
enabled: onPressed != null,
focusNode: focusNode,
autofocus: autofocus,
child: GestureDetector(onTap: onPressed, child: child),
),
);
}
}