mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Replacing shortner urls with the long versions. Fixes #172843 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [ ] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
80 lines
3.0 KiB
Dart
80 lines
3.0 KiB
Dart
// 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.
|
|
|
|
import 'package:flutter/foundation.dart' show defaultTargetPlatform;
|
|
import 'package:flutter/gestures.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:url_launcher/url_launcher.dart';
|
|
|
|
class _LinkTextSpan extends TextSpan {
|
|
// Beware!
|
|
//
|
|
// This class is only safe because the TapGestureRecognizer is not
|
|
// given a deadline and therefore never allocates any resources.
|
|
//
|
|
// In any other situation -- setting a deadline, using any of the less trivial
|
|
// recognizers, etc -- you would have to manage the gesture recognizer's
|
|
// lifetime and call dispose() when the TextSpan was no longer being rendered.
|
|
//
|
|
// Since TextSpan itself is @immutable, this means that you would have to
|
|
// manage the recognizer from outside the TextSpan, e.g. in the State of a
|
|
// stateful widget that then hands the recognizer to the TextSpan.
|
|
|
|
_LinkTextSpan({super.style, required String url, String? text})
|
|
: super(
|
|
text: text ?? url,
|
|
recognizer: TapGestureRecognizer()
|
|
..onTap = () {
|
|
launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
|
|
},
|
|
);
|
|
}
|
|
|
|
void showGalleryAboutDialog(BuildContext context) {
|
|
final ThemeData themeData = Theme.of(context);
|
|
final TextStyle? aboutTextStyle = themeData.textTheme.bodyLarge;
|
|
final TextStyle linkStyle = themeData.textTheme.bodyLarge!.copyWith(
|
|
color: themeData.colorScheme.primary,
|
|
);
|
|
|
|
showAboutDialog(
|
|
context: context,
|
|
applicationVersion: 'January 2019',
|
|
applicationIcon: const FlutterLogo(),
|
|
applicationLegalese: '© 2014 The Flutter Authors',
|
|
children: <Widget>[
|
|
Padding(
|
|
padding: const EdgeInsets.only(top: 24.0),
|
|
child: RichText(
|
|
text: TextSpan(
|
|
children: <TextSpan>[
|
|
TextSpan(
|
|
style: aboutTextStyle,
|
|
text:
|
|
'Flutter is an open-source project to help developers '
|
|
'build high-performance, high-fidelity, mobile apps for '
|
|
'${defaultTargetPlatform == TargetPlatform.iOS ? 'multiple platforms' : 'iOS and Android'} '
|
|
'from a single codebase. This design lab is a playground '
|
|
"and showcase of Flutter's many widgets, behaviors, "
|
|
'animations, layouts, and more. Learn more about Flutter at ',
|
|
),
|
|
_LinkTextSpan(style: linkStyle, url: 'https://flutter.dev'),
|
|
TextSpan(
|
|
style: aboutTextStyle,
|
|
text: '.\n\nTo see the source code for this app, please visit the ',
|
|
),
|
|
_LinkTextSpan(
|
|
style: linkStyle,
|
|
url: 'https://github.com/flutter/gallery',
|
|
text: 'flutter github repo',
|
|
),
|
|
TextSpan(style: aboutTextStyle, text: '.'),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
],
|
|
);
|
|
}
|