-
Notifications
You must be signed in to change notification settings - Fork 7
/
app_head.dart
53 lines (47 loc) · 1.31 KB
/
app_head.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:seo/seo.dart';
import 'package:visibility_detector/visibility_detector.dart';
class AppHead extends StatefulWidget {
final String title;
final String description;
final String? author;
final Widget child;
const AppHead({
super.key,
required this.title,
required this.description,
this.author,
required this.child,
});
@override
State<AppHead> createState() => _AppHeadState();
}
class _AppHeadState extends State<AppHead> {
final _key = UniqueKey();
@override
Widget build(BuildContext context) {
return VisibilityDetector(
key: _key,
onVisibilityChanged: (info) {
if (info.visibleFraction > 0.0) {
SystemChrome.setApplicationSwitcherDescription(
ApplicationSwitcherDescription(
label: widget.title,
primaryColor: Theme.of(context).primaryColor.value,
),
);
}
},
child: Seo.head(
tags: [
MetaTag(name: 'title', content: widget.title),
MetaTag(name: 'description', content: widget.description),
if (widget.author != null)
MetaTag(name: 'author', content: widget.author),
],
child: widget.child,
),
);
}
}