"Fossies" - the Fresh Open Source Software Archive 
Member "flutter-3.7.0/dev/integration_tests/flutter_gallery/lib/gallery/about.dart" (24 Jan 2023, 3122 Bytes) of package /linux/misc/flutter-3.7.0.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Dart source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
See also the latest
Fossies "Diffs" side-by-side code changes report for "about.dart":
3.3.10_vs_3.7.0.
1 // Copyright 2014 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 import 'package:flutter/foundation.dart' show defaultTargetPlatform;
6 import 'package:flutter/gestures.dart';
7 import 'package:flutter/material.dart';
8 import 'package:url_launcher/url_launcher.dart';
9
10 class _LinkTextSpan extends TextSpan {
11
12 // Beware!
13 //
14 // This class is only safe because the TapGestureRecognizer is not
15 // given a deadline and therefore never allocates any resources.
16 //
17 // In any other situation -- setting a deadline, using any of the less trivial
18 // recognizers, etc -- you would have to manage the gesture recognizer's
19 // lifetime and call dispose() when the TextSpan was no longer being rendered.
20 //
21 // Since TextSpan itself is @immutable, this means that you would have to
22 // manage the recognizer from outside the TextSpan, e.g. in the State of a
23 // stateful widget that then hands the recognizer to the TextSpan.
24
25 _LinkTextSpan({ super.style, required String url, String? text }) : super(
26 text: text ?? url,
27 recognizer: TapGestureRecognizer()..onTap = () {
28 launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
29 }
30 );
31 }
32
33 void showGalleryAboutDialog(BuildContext context) {
34 final ThemeData themeData = Theme.of(context);
35 final TextStyle? aboutTextStyle = themeData.textTheme.bodyLarge;
36 final TextStyle linkStyle = themeData.textTheme.bodyLarge!.copyWith(color: themeData.colorScheme.primary);
37
38 showAboutDialog(
39 context: context,
40 applicationVersion: 'January 2019',
41 applicationIcon: const FlutterLogo(),
42 applicationLegalese: '© 2014 The Flutter Authors',
43 children: <Widget>[
44 Padding(
45 padding: const EdgeInsets.only(top: 24.0),
46 child: RichText(
47 text: TextSpan(
48 children: <TextSpan>[
49 TextSpan(
50 style: aboutTextStyle,
51 text: 'Flutter is an open-source project to help developers '
52 'build high-performance, high-fidelity, mobile apps for '
53 '${defaultTargetPlatform == TargetPlatform.iOS ? 'multiple platforms' : 'iOS and Android'} '
54 'from a single codebase. This design lab is a playground '
55 "and showcase of Flutter's many widgets, behaviors, "
56 'animations, layouts, and more. Learn more about Flutter at ',
57 ),
58 _LinkTextSpan(
59 style: linkStyle,
60 url: 'https://flutter.dev',
61 ),
62 TextSpan(
63 style: aboutTextStyle,
64 text: '.\n\nTo see the source code for this app, please visit the ',
65 ),
66 _LinkTextSpan(
67 style: linkStyle,
68 url: 'https://goo.gl/iv1p4G',
69 text: 'flutter github repo',
70 ),
71 TextSpan(
72 style: aboutTextStyle,
73 text: '.',
74 ),
75 ],
76 ),
77 ),
78 ),
79 ],
80 );
81 }