Skip to content

Commit

Permalink
feat: Added Tooltip95, a Windows95 Themed tooltip (#19)
Browse files Browse the repository at this point in the history
Co-authored-by: Miguel Beltran <m@beltran.work>
  • Loading branch information
Taosif7 and miquelbeltran committed Oct 23, 2023
1 parent f6442a3 commit db40a73
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 0 deletions.
12 changes: 12 additions & 0 deletions README.md
Expand Up @@ -123,6 +123,18 @@ TextField styled as a Windows95 text field.
TextField95()
```

#### Tooltip95

A tooltip widget designed in Windows95 style.
* Works just like Material's `Tooltip`.

```dart
Tooltip95(
message: 'Hello from Flutter95!',
child: Text('I have a tooltip for you!'),
)
```

#### Elevation95

Creates an effect of deepness and elevation around Widgets.
Expand Down
8 changes: 8 additions & 0 deletions example/lib/main.dart
Expand Up @@ -88,6 +88,14 @@ class MainScreen extends StatelessWidget {
style: Flutter95.textStyle,
),
const SizedBox(height: 4),
Tooltip95(
message: 'Hello from Flutter95!',
child: Text(
'Long press this on to see a tooltip',
style: Flutter95.textStyle,
),
),
const SizedBox(height: 4),
Button95(
onTap: () {
showDialog95(
Expand Down
1 change: 1 addition & 0 deletions lib/flutter95.dart
Expand Up @@ -9,5 +9,6 @@ export 'src/scaffold95.dart';
export 'src/text_field95.dart';
export 'src/checkbox95.dart';
export 'src/toolbar95.dart';
export 'src/tooltip95.dart';
export 'src/page_transitions95.dart';
export 'src/utils.dart';
1 change: 1 addition & 0 deletions lib/src/globals.dart
Expand Up @@ -13,6 +13,7 @@ class Flutter95 {
static const headerLight = Color(0xFF1034a6);
static const white = Color(0xFFFFFFFF);
static const black = Color.fromRGBO(5, 6, 8, 1);
static const tooltipBackground = Color(0xFFFFFFE3);

static Color get background => grays[1];

Expand Down
55 changes: 55 additions & 0 deletions lib/src/tooltip95.dart
@@ -0,0 +1,55 @@
import 'package:flutter/material.dart';
import 'package:flutter95/src/globals.dart';

class Tooltip95 extends StatelessWidget {
const Tooltip95({
Key? key,
required this.child,
required this.message,
this.triggerMode,
this.preferBelow,
this.showDuration,
this.onTriggered,
});

final Widget child;
final String message;
final TooltipTriggerMode? triggerMode;
final bool? preferBelow;
final Duration? showDuration;
final void Function()? onTriggered;

@override
Widget build(BuildContext context) {
return Tooltip(
key: key,
child: child,
message: message,
margin: const EdgeInsets.all(8.0),
textAlign: TextAlign.center,
preferBelow: preferBelow,
showDuration: showDuration,
onTriggered: onTriggered,
padding: const EdgeInsets.symmetric(
horizontal: 8,
vertical: 4,
),
decoration: BoxDecoration(
border: Border.all(
color: Colors.black,
width: 1.0,
),
borderRadius: BorderRadius.zero,
color: Flutter95.tooltipBackground,
boxShadow: [
BoxShadow(
color: Flutter95.black,
offset: Offset(2.0, 2.0),
),
],
),
triggerMode: triggerMode,
textStyle: Flutter95.textStyle,
);
}
}
23 changes: 23 additions & 0 deletions test/flutter95_test.dart
Expand Up @@ -82,6 +82,29 @@ void main() {
});
});

group('Tooltip95', () {
testWidgets('Can show tooltip', (tester) async {
String message = 'Hello world';

await tester.pumpWidget(
MaterialApp(
home: Tooltip95(
message: message,
triggerMode: TooltipTriggerMode.longPress,
child: Text(
'long press to show tooltip',
style: Flutter95.textStyle,
),
),
),
);

await tester.longPress(find.byType(Text));
await tester.pump();
expect(find.byTooltip(message), findsOneWidget);
});
});

group('Checkbox95', () {
testWidgets('Can build enabled widget', (tester) async {
await tester.pumpWidget(
Expand Down

0 comments on commit db40a73

Please sign in to comment.