"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 }