Switch to more reliable flutter.dev link destinations in the tool (#150587)

Contributes to https://github.com/flutter/website/issues/10363.
This commit is contained in:
Parker Lougheed 2024-06-26 18:30:39 -05:00 committed by GitHub
parent 776efc20d8
commit c946a5a526
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
70 changed files with 137 additions and 140 deletions

View File

@ -8,7 +8,7 @@
logger.error("You are applying Flutter's app_plugin_loader Gradle plugin \ logger.error("You are applying Flutter's app_plugin_loader Gradle plugin \
imperatively using the apply script method, which is deprecated and will be \ imperatively using the apply script method, which is deprecated and will be \
removed in a future release. Migrate to applying Gradle plugins with the \ removed in a future release. Migrate to applying Gradle plugins with the \
declarative plugins block: https://flutter.dev/go/flutter-gradle-plugin-apply\n\ declarative plugins block: https://flutter.dev/to/flutter-gradle-plugin-apply\n\
") ")
def pathToThisDirectory = buildscript.sourceFile.parentFile def pathToThisDirectory = buildscript.sourceFile.parentFile

View File

@ -8,7 +8,7 @@
logger.error("You are applying Flutter's main Gradle plugin imperatively using \ logger.error("You are applying Flutter's main Gradle plugin imperatively using \
the apply script method, which is deprecated and will be removed in a future \ the apply script method, which is deprecated and will be removed in a future \
release. Migrate to applying Gradle plugins with the declarative plugins \ release. Migrate to applying Gradle plugins with the declarative plugins \
block: https://flutter.dev/go/flutter-gradle-plugin-apply\n") block: https://flutter.dev/to/flutter-gradle-plugin-apply\n")
def pathToThisDirectory = buildscript.sourceFile.parentFile def pathToThisDirectory = buildscript.sourceFile.parentFile
apply from: "$pathToThisDirectory/src/main/groovy/flutter.groovy" apply from: "$pathToThisDirectory/src/main/groovy/flutter.groovy"

View File

@ -206,7 +206,7 @@ class FlutterPlugin implements Plugin<Project> {
/** /**
* Flutter Docs Website URLs for help messages. * Flutter Docs Website URLs for help messages.
*/ */
private final String kWebsiteDeploymentAndroidBuildConfig = "https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration" private final String kWebsiteDeploymentAndroidBuildConfig = "https://flutter.dev/to/review-gradle-config"
@Override @Override
void apply(Project project) { void apply(Project project) {

View File

@ -6,7 +6,7 @@ import '../base/common.dart';
import '../build_info.dart'; import '../build_info.dart';
const String kGooglePlayVersioning = 'https://developer.android.com/studio/publish/versioning.html'; const String kGooglePlayVersioning = 'https://developer.android.com/studio/publish/versioning.html';
const String kSupportedAbis = 'https://flutter.dev/docs/deployment/android#what-are-the-supported-target-architectures'; const String kSupportedAbis = 'https://flutter.dev/to/android-supported-architectures';
/// Validates that the build mode and build number are valid for a given build. /// Validates that the build mode and build number are valid for a given build.
void validateBuild(AndroidBuildInfo androidBuildInfo) { void validateBuild(AndroidBuildInfo androidBuildInfo) {

View File

@ -911,7 +911,7 @@ void printHowToConsumeAar({
'''); ''');
} }
logger.printStatus('To learn more, visit https://flutter.dev/go/build-aar'); logger.printStatus('To learn more, visit https://flutter.dev/to/integrate-android-archive');
} }
String _hex(List<int> bytes) { String _hex(List<int> bytes) {

View File

@ -358,7 +358,7 @@ final GradleHandledError minSdkVersionHandler = GradleHandledError(
'$textInBold\n' '$textInBold\n'
'Following this change, your app will not be available to users running Android SDKs below ${minSdkVersionMatch?.group(2)}.\n' 'Following this change, your app will not be available to users running Android SDKs below ${minSdkVersionMatch?.group(2)}.\n'
'Consider searching for a version of this plugin that supports these lower versions of the Android SDK instead.\n' 'Consider searching for a version of this plugin that supports these lower versions of the Android SDK instead.\n'
'For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration', 'For more information, see: https://flutter.dev/to/review-gradle-config',
title: _boxTitle, title: _boxTitle,
); );
return GradleBuildStatus.exit; return GradleBuildStatus.exit;
@ -592,7 +592,7 @@ final GradleHandledError incompatibleJavaAndGradleVersionsHandler = GradleHandle
"${globals.logger.terminal.warningMark} Your project's Gradle version " "${globals.logger.terminal.warningMark} Your project's Gradle version "
'is incompatible with the Java version that Flutter is using for Gradle.\n\n' 'is incompatible with the Java version that Flutter is using for Gradle.\n\n'
'If you recently upgraded Android Studio, consult the migration guide ' 'If you recently upgraded Android Studio, consult the migration guide '
'at docs.flutter.dev/go/android-java-gradle-error.\n\n' 'at https://flutter.dev/to/to/java-gradle-incompatibility.\n\n'
'Otherwise, to fix this issue, first, check the Java version used by Flutter by ' 'Otherwise, to fix this issue, first, check the Java version used by Flutter by '
'running `flutter doctor --verbose`.\n\n' 'running `flutter doctor --verbose`.\n\n'
'Then, update the Gradle version specified in ${gradlePropertiesFile.path} ' 'Then, update the Gradle version specified in ${gradlePropertiesFile.path} '

View File

@ -112,7 +112,7 @@ class Net {
_logger.printError(error.toString()); _logger.printError(error.toString());
throwToolExit( throwToolExit(
'The value of $kFlutterStorageBaseUrl ($overrideUrl) could not be ' 'The value of $kFlutterStorageBaseUrl ($overrideUrl) could not be '
'parsed as a valid url. Please see https://flutter.dev/community/china ' 'parsed as a valid url. Please see https://flutter.dev/to/use-mirror-site '
'for an example of how to use it.\n' 'for an example of how to use it.\n'
'Full URL: $url', 'Full URL: $url',
exitCode: kNetworkProblemExitCode, exitCode: kNetworkProblemExitCode,

View File

@ -22,16 +22,16 @@ class UserMessages {
'Flutter version $version on channel $channel at $flutterRoot'; 'Flutter version $version on channel $channel at $flutterRoot';
String get flutterUnknownChannel => String get flutterUnknownChannel =>
'Currently on an unknown channel. Run `flutter channel` to switch to an official channel.\n' 'Currently on an unknown channel. Run `flutter channel` to switch to an official channel.\n'
"If that doesn't fix the issue, reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install."; "If that doesn't fix the issue, reinstall Flutter by following instructions at https://flutter.dev/setup.";
String get flutterUnknownVersion => String get flutterUnknownVersion =>
'Cannot resolve current version, possibly due to local changes.\n' 'Cannot resolve current version, possibly due to local changes.\n'
'Reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install.'; 'Reinstall Flutter by following instructions at https://flutter.dev/setup.';
String flutterRevision(String revision, String age, String date) => String flutterRevision(String revision, String age, String date) =>
'Framework revision $revision ($age), $date'; 'Framework revision $revision ($age), $date';
String flutterUpstreamRepositoryUrl(String url) => 'Upstream repository $url'; String flutterUpstreamRepositoryUrl(String url) => 'Upstream repository $url';
String get flutterUpstreamRepositoryUnknown => String get flutterUpstreamRepositoryUnknown =>
'Unknown upstream repository.\n' 'Unknown upstream repository.\n'
'Reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install.'; 'Reinstall Flutter by following instructions at https://flutter.dev/setup.';
String flutterUpstreamRepositoryUrlEnvMismatch(String url) => 'Upstream repository $url is not the same as FLUTTER_GIT_URL'; String flutterUpstreamRepositoryUrlEnvMismatch(String url) => 'Upstream repository $url is not the same as FLUTTER_GIT_URL';
String flutterUpstreamRepositoryUrlNonStandard(String url) => String flutterUpstreamRepositoryUrlNonStandard(String url) =>
'Upstream repository $url is not a standard remote.\n' 'Upstream repository $url is not a standard remote.\n'
@ -65,7 +65,7 @@ class UserMessages {
String intellijStatusInfo(String version) => 'version $version'; String intellijStatusInfo(String version) => 'version $version';
String get intellijPluginInfo => String get intellijPluginInfo =>
'For information about installing plugins, see\n' 'For information about installing plugins, see\n'
'https://flutter.dev/intellij-setup/#installing-the-plugins'; 'https://flutter.dev/to/intellij-setup';
String intellijMinimumVersion(String minVersion) => String intellijMinimumVersion(String minVersion) =>
'This install is older than the minimum recommended version of $minVersion.'; 'This install is older than the minimum recommended version of $minVersion.';
String intellijLocation(String installPath) => 'IntelliJ at $installPath'; String intellijLocation(String installPath) => 'IntelliJ at $installPath';
@ -343,16 +343,15 @@ class UserMessages {
'https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html\n'; 'https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html\n';
String androidSdkInstallUrl(Platform platform) { String androidSdkInstallUrl(Platform platform) {
const String baseUrl = 'https://flutter.dev/docs/get-started/install'; const String baseUrl = 'https://flutter.dev/to/';
const String fragment = '#android-setup';
if (platform.isMacOS) { if (platform.isMacOS) {
return '$baseUrl/macos$fragment'; return '${baseUrl}macos-android-setup';
} else if (platform.isLinux) { } else if (platform.isLinux) {
return '$baseUrl/linux$fragment'; return '${baseUrl}linux-android-setup';
} else if (platform.isWindows) { } else if (platform.isWindows) {
return '$baseUrl/windows$fragment'; return '${baseUrl}windows-android-setup';
} else { } else {
return baseUrl; return '${baseUrl}android-setup';
} }
} }
} }

View File

@ -716,7 +716,7 @@ class Cache {
_logger.printError( _logger.printError(
'Failed to retrieve Flutter tool dependencies: ${e.message}.\n' 'Failed to retrieve Flutter tool dependencies: ${e.message}.\n'
"If you're in China, please see this page: " "If you're in China, please see this page: "
'https://flutter.dev/community/china', 'https://flutter.dev/to/china-setup',
emphasis: true, emphasis: true,
); );
} }
@ -1111,7 +1111,7 @@ class ArtifactUpdater {
_logger.printError(error.toString()); _logger.printError(error.toString());
throwToolExit( throwToolExit(
'The value of $kFlutterStorageBaseUrl ($overrideUrl) could not be ' 'The value of $kFlutterStorageBaseUrl ($overrideUrl) could not be '
'parsed as a valid url. Please see https://flutter.dev/community/china ' 'parsed as a valid url. Please see https://flutter.dev/to/use-mirror-site '
'for an example of how to use it.\n' 'for an example of how to use it.\n'
'Full URL: $url', 'Full URL: $url',
exitCode: kNetworkProblemExitCode, exitCode: kNetworkProblemExitCode,
@ -1156,7 +1156,7 @@ class ArtifactUpdater {
throwToolExit( throwToolExit(
'Flutter could not download and/or extract $url. Ensure you have ' 'Flutter could not download and/or extract $url. Ensure you have '
'network connectivity and all of the required dependencies listed at ' 'network connectivity and all of the required dependencies listed at '
'flutter.dev/setup.\nThe original exception was: $err.' 'https://flutter.dev/setup.\nThe original exception was: $err.'
); );
} }
_deleteIgnoringErrors(tempFile); _deleteIgnoringErrors(tempFile);

View File

@ -119,7 +119,7 @@ class BuildAarCommand extends BuildSubCommand {
final String description = 'Build a repository containing an AAR and a POM file.\n\n' final String description = 'Build a repository containing an AAR and a POM file.\n\n'
'By default, AARs are built for `release`, `debug` and `profile`.\n' 'By default, AARs are built for `release`, `debug` and `profile`.\n'
'The POM file is used to include the dependencies that the AAR was compiled against.\n' 'The POM file is used to include the dependencies that the AAR was compiled against.\n'
'To learn more about how to use these artifacts, see: https://flutter.dev/go/build-aar\n' 'To learn more about how to use these artifacts, see: https://flutter.dev/to/integrate-android-archive\n'
'This command assumes that the entrypoint is "lib/main.dart". ' 'This command assumes that the entrypoint is "lib/main.dart". '
'This cannot currently be configured.'; 'This cannot currently be configured.';

View File

@ -444,7 +444,7 @@ class BuildIOSArchiveCommand extends _BuildIOSSubCommand {
); );
} }
} }
globals.printStatus('\nTo update the settings, please refer to https://docs.flutter.dev/deployment/ios\n'); globals.printStatus('\nTo update the settings, please refer to https://flutter.dev/to/ios-deploy\n');
// xcarchive failed or not at expected location. // xcarchive failed or not at expected location.
if (xcarchiveResult.exitStatus != ExitStatus.success) { if (xcarchiveResult.exitStatus != ExitStatus.success) {

View File

@ -327,7 +327,7 @@ class BuildIOSFrameworkCommand extends BuildFrameworkCommand {
.path); .path);
globals.printStatus( globals.printStatus(
'\nCopy the ${globals.fs.path.basenameWithoutExtension(pluginRegistrantHeader.path)} class into your project.\n' '\nCopy the ${globals.fs.path.basenameWithoutExtension(pluginRegistrantHeader.path)} class into your project.\n'
'See https://flutter.dev/docs/development/add-to-app/ios/add-flutter-screen#create-a-flutterengine for more information.'); 'See https://flutter.dev/to/ios-create-flutter-engine for more information.');
} }
return FlutterCommandResult.success(); return FlutterCommandResult.success();
@ -375,7 +375,7 @@ LICENSE
} }
s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
s.source = { :http => '${cache.storageBaseUrl}/flutter_infra_release/flutter/${cache.engineRevision}/$artifactsMode/artifacts.zip' } s.source = { :http => '${cache.storageBaseUrl}/flutter_infra_release/flutter/${cache.engineRevision}/$artifactsMode/artifacts.zip' }
s.documentation_url = 'https://flutter.dev/docs' s.documentation_url = 'https://docs.flutter.dev'
s.platform = :ios, '12.0' s.platform = :ios, '12.0'
s.vendored_frameworks = 'Flutter.xcframework' s.vendored_frameworks = 'Flutter.xcframework'
end end

View File

@ -192,7 +192,7 @@ LICENSE
} }
s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
s.source = { :http => '${cache.storageBaseUrl}/flutter_infra_release/flutter/${cache.engineRevision}/$artifactsMode/FlutterMacOS.framework.zip' } s.source = { :http => '${cache.storageBaseUrl}/flutter_infra_release/flutter/${cache.engineRevision}/$artifactsMode/FlutterMacOS.framework.zip' }
s.documentation_url = 'https://flutter.dev/docs' s.documentation_url = 'https://docs.flutter.dev'
s.osx.deployment_target = '10.14' s.osx.deployment_target = '10.14'
s.vendored_frameworks = 'FlutterMacOS.framework' s.vendored_frameworks = 'FlutterMacOS.framework'
s.prepare_command = 'unzip FlutterMacOS.framework -d FlutterMacOS.framework' s.prepare_command = 'unzip FlutterMacOS.framework -d FlutterMacOS.framework'

View File

@ -820,7 +820,7 @@ Your example app code is in $relativeExampleMain.
if (platformsString.isNotEmpty) { if (platformsString.isNotEmpty) {
globals.printStatus(''' globals.printStatus('''
Host platform code is in the $platformsString directories under $pluginPath. Host platform code is in the $platformsString directories under $pluginPath.
To edit platform code in an IDE see https://flutter.dev/developing-packages/#edit-plugin-package. To edit platform code in an IDE see https://flutter.dev/to/edit-plugins.
'''); ''');
} }
@ -841,7 +841,7 @@ You've created a plugin project that doesn't yet support any platforms.
void _printPluginAddPlatformMessage(String pluginPath, String template) { void _printPluginAddPlatformMessage(String pluginPath, String template) {
globals.printStatus(''' globals.printStatus('''
To add platforms, run `flutter create -t $template --platforms <platforms> .` under $pluginPath. To add platforms, run `flutter create -t $template --platforms <platforms> .` under $pluginPath.
For more information, see https://flutter.dev/go/plugin-platforms. For more information, see https://flutter.dev/to/pubspec-plugin-platforms.
'''); ''');
} }
@ -881,13 +881,13 @@ void _printWarningDisabledPlatform(List<String> platforms) {
globals.printStatus(''' globals.printStatus('''
The desktop $platforms: ${desktop.join(', ')} $verb currently not supported on your local environment. The desktop $platforms: ${desktop.join(', ')} $verb currently not supported on your local environment.
For more details, see: https://flutter.dev/desktop For more details, see: https://flutter.dev/to/add-desktop-support
'''); ''');
} }
if (web.isNotEmpty) { if (web.isNotEmpty) {
globals.printStatus(''' globals.printStatus('''
The web is currently not supported on your local environment. The web is currently not supported on your local environment.
For more details, see: https://flutter.dev/docs/get-started/web For more details, see: https://flutter.dev/to/add-web-support
'''); ''');
} }
} }

View File

@ -708,11 +708,11 @@ abstract class CreateBase extends FlutterCommand {
// A valid Dart identifier that can be used for a package, i.e. no // A valid Dart identifier that can be used for a package, i.e. no
// capital letters. // capital letters.
// https://dart.dev/guides/language/language-tour#important-concepts // https://dart.dev/language#important-concepts
final RegExp _identifierRegExp = RegExp('[a-z_][a-z0-9_]*'); final RegExp _identifierRegExp = RegExp('[a-z_][a-z0-9_]*');
// non-contextual dart keywords. // non-contextual dart keywords.
//' https://dart.dev/guides/language/language-tour#keywords // https://dart.dev/language/keywords
const Set<String> _keywords = <String>{ const Set<String> _keywords = <String>{
'abstract', 'abstract',
'as', 'as',

View File

@ -17,7 +17,7 @@ import '../runner/flutter_command.dart';
/// It generates Dart localization source files from arb files. /// It generates Dart localization source files from arb files.
/// ///
/// For a more comprehensive tutorial on the tool, please see the /// For a more comprehensive tutorial on the tool, please see the
/// [internationalization user guide](flutter.dev/go/i18n-user-guide). /// [internationalization guide](https://flutter.dev/to/internationalization).
class GenerateLocalizationsCommand extends FlutterCommand { class GenerateLocalizationsCommand extends FlutterCommand {
GenerateLocalizationsCommand({ GenerateLocalizationsCommand({
required FileSystem fileSystem, required FileSystem fileSystem,

View File

@ -46,8 +46,8 @@ const String _kIntegrationTestDirectory = 'integration_test';
/// the `*_test.dart` suffix, and run them in a single invocation. /// the `*_test.dart` suffix, and run them in a single invocation.
/// ///
/// See: /// See:
/// - https://flutter.dev/docs/cookbook/testing/unit/introduction /// - https://flutter.dev/to/unit-testing
/// - https://flutter.dev/docs/cookbook/testing/widget/introduction /// - https://flutter.dev/to/widget-testing
/// ///
/// ## Integration Tests /// ## Integration Tests
/// ///
@ -59,7 +59,7 @@ const String _kIntegrationTestDirectory = 'integration_test';
/// your package. To run these tests, use `flutter test integration_test`. /// your package. To run these tests, use `flutter test integration_test`.
/// ///
/// See: /// See:
/// - https://flutter.dev/docs/testing/integration-tests /// - https://flutter.dev/to/integration-testing
class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts { class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts {
TestCommand({ TestCommand({
bool verboseHelp = false, bool verboseHelp = false,

View File

@ -18,7 +18,7 @@ import '../version.dart';
import 'channel.dart'; import 'channel.dart';
// The official docs to install Flutter. // The official docs to install Flutter.
const String _flutterInstallDocs = 'https://flutter.dev/docs/get-started/install'; const String _flutterInstallDocs = 'https://flutter.dev/setup';
class UpgradeCommand extends FlutterCommand { class UpgradeCommand extends FlutterCommand {
UpgradeCommand({ UpgradeCommand({
@ -135,7 +135,7 @@ class UpgradeCommandRunner {
globals.printStatus('To upgrade now, run "flutter upgrade".'); globals.printStatus('To upgrade now, run "flutter upgrade".');
if (flutterVersion.channel == 'stable') { if (flutterVersion.channel == 'stable') {
globals.printStatus('\nSee the announcement and release notes:'); globals.printStatus('\nSee the announcement and release notes:');
globals.printStatus('https://flutter.dev/docs/development/tools/sdk/release-notes'); globals.printStatus('https://docs.flutter.dev/release/release-notes');
} }
return; return;
} }

View File

@ -171,7 +171,7 @@ class WebDriverService extends DriverService {
'Unable to start a WebDriver session for web testing.\n' 'Unable to start a WebDriver session for web testing.\n'
'Make sure you have the correct WebDriver server (e.g. chromedriver) running at $driverPort.\n' 'Make sure you have the correct WebDriver server (e.g. chromedriver) running at $driverPort.\n'
'For instructions on how to obtain and run a WebDriver server, see:\n' 'For instructions on how to obtain and run a WebDriver server, see:\n'
'https://flutter.dev/docs/testing/integration-tests#running-in-a-browser\n' 'https://flutter.dev/to/integration-test-on-web\n'
); );
} }

View File

@ -87,7 +87,7 @@ class HttpHostValidator extends DoctorValidator {
if (url == null) { if (url == null) {
availabilityResults.add( availabilityResults.add(
'Environment variable $kPubDevOverride does not specify a valid URL: "${_platform.environment[kPubDevOverride]}"\n' 'Environment variable $kPubDevOverride does not specify a valid URL: "${_platform.environment[kPubDevOverride]}"\n'
'Please see https://flutter.dev/community/china for an example of how to use it.' 'Please see https://flutter.dev/to/use-mirror-site for an example of how to use it.'
); );
} else { } else {
requiredHosts.add(url); requiredHosts.add(url);
@ -100,7 +100,7 @@ class HttpHostValidator extends DoctorValidator {
if (url == null) { if (url == null) {
availabilityResults.add( availabilityResults.add(
'Environment variable $kFlutterStorageBaseUrl does not specify a valid URL: "${_platform.environment[kFlutterStorageBaseUrl]}"\n' 'Environment variable $kFlutterStorageBaseUrl does not specify a valid URL: "${_platform.environment[kFlutterStorageBaseUrl]}"\n'
'Please see https://flutter.dev/community/china for an example of how to use it.' 'Please see https://flutter.dev/to/use-mirror-site for an example of how to use it.'
); );
} else { } else {
requiredHosts.add(url); requiredHosts.add(url);

View File

@ -50,7 +50,7 @@ It's also possible that a previously installed app with the same Bundle\u0020
Identifier was signed with a different certificate. Identifier was signed with a different certificate.
For more information, please visit: For more information, please visit:
https://flutter.dev/docs/get-started/install/macos#deploy-to-ios-devices https://flutter.dev/to/ios-app-signing
Or run on an iOS simulator without code signing Or run on an iOS simulator without code signing
'''; ''';
@ -64,7 +64,7 @@ Provisioning Profile. Please ensure that a Development Team is selected by:
$fixWithDevelopmentTeamInstruction $fixWithDevelopmentTeamInstruction
For more information, please visit: For more information, please visit:
https://flutter.dev/docs/get-started/install/macos#deploy-to-ios-devices https://flutter.dev/to/ios-development-team
Or run on an iOS simulator without code signing Or run on an iOS simulator without code signing
'''; ''';

View File

@ -101,7 +101,7 @@ class RemoveFrameworkLinkAndEmbeddingMigration extends ProjectMigrator {
parameter: 'remove-frameworks', parameter: 'remove-frameworks',
result: 'failure', result: 'failure',
)); ));
throwToolExit('Your Xcode project requires migration. See https://flutter.dev/docs/development/ios-project-migration for details.'); throwToolExit('Your Xcode project requires migration. See https://docs.flutter.dev/ios-project-migration for details.');
} }
return line; return line;

View File

@ -43,7 +43,7 @@ Future<void> buildLinux(
target ??= 'lib/main.dart'; target ??= 'lib/main.dart';
if (!linuxProject.cmakeFile.existsSync()) { if (!linuxProject.cmakeFile.existsSync()) {
throwToolExit('No Linux desktop project configured. See ' throwToolExit('No Linux desktop project configured. See '
'https://docs.flutter.dev/desktop#add-desktop-support-to-an-existing-flutter-app ' 'https://flutter.dev/to/add-desktop-support '
'to learn about adding Linux support to a project.'); 'to learn about adding Linux support to a project.');
} }

View File

@ -70,7 +70,7 @@ Future<void> buildMacOS({
final Directory? xcodeWorkspace = flutterProject.macos.xcodeWorkspace; final Directory? xcodeWorkspace = flutterProject.macos.xcodeWorkspace;
if (xcodeWorkspace == null) { if (xcodeWorkspace == null) {
throwToolExit('No macOS desktop project configured. ' throwToolExit('No macOS desktop project configured. '
'See https://docs.flutter.dev/desktop#add-desktop-support-to-an-existing-flutter-app ' 'See https://flutter.dev/to/add-desktop-support '
'to learn about adding macOS support to a project.'); 'to learn about adding macOS support to a project.');
} }

View File

@ -27,7 +27,7 @@ import '../reporting/reporting.dart';
const String noCocoaPodsConsequence = ''' const String noCocoaPodsConsequence = '''
CocoaPods is a package manager for iOS or macOS platform code. CocoaPods is a package manager for iOS or macOS platform code.
Without CocoaPods, plugins will not work on iOS or macOS. Without CocoaPods, plugins will not work on iOS or macOS.
For more info, see https://flutter.dev/platform-plugins'''; For more info, see https://flutter.dev/to/platform-plugins''';
const String unknownCocoaPodsConsequence = ''' const String unknownCocoaPodsConsequence = '''
Flutter is unable to determine the installed CocoaPods's version. Flutter is unable to determine the installed CocoaPods's version.
@ -44,7 +44,7 @@ const String outOfDateFrameworksPodfileConsequence = '''
const String outOfDatePluginsPodfileConsequence = ''' const String outOfDatePluginsPodfileConsequence = '''
This can cause issues if your application depends on plugins that do not support iOS or macOS. This can cause issues if your application depends on plugins that do not support iOS or macOS.
See https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms for details. See https://flutter.dev/to/pubspec-plugin-platforms for details.
If you have local Podfile edits you would like to keep, see https://github.com/flutter/flutter/issues/45197 for instructions.'''; If you have local Podfile edits you would like to keep, see https://github.com/flutter/flutter/issues/45197 for instructions.''';
const String cocoaPodsInstallInstructions = 'see https://guides.cocoapods.org/using/getting-started.html#installation'; const String cocoaPodsInstallInstructions = 'see https://guides.cocoapods.org/using/getting-started.html#installation';
@ -84,7 +84,7 @@ const Version cocoaPodsRecommendedVersion = Version.withText(1, 13, 0, '1.13.0')
/// ///
/// See also: /// See also:
/// * https://cocoapods.org/ - the cocoapods website. /// * https://cocoapods.org/ - the cocoapods website.
/// * https://flutter.dev/docs/get-started/install/macos#deploy-to-ios-devices - instructions for /// * https://flutter.dev/to/macos-ios-setup - instructions for
/// installing iOS/macOS dependencies. /// installing iOS/macOS dependencies.
class CocoaPods { class CocoaPods {
CocoaPods({ CocoaPods({
@ -435,12 +435,12 @@ class CocoaPods {
symlinksDir = xcodeProject.symlinks; symlinksDir = xcodeProject.symlinks;
podPlatformString = 'ios'; podPlatformString = 'ios';
platformName = 'iOS'; platformName = 'iOS';
docsLink = 'https://docs.flutter.dev/deployment/ios'; docsLink = 'https://flutter.dev/to/ios-deploy';
} else if (xcodeProject is MacOSProject) { } else if (xcodeProject is MacOSProject) {
symlinksDir = xcodeProject.ephemeralDirectory.childDirectory('.symlinks'); symlinksDir = xcodeProject.ephemeralDirectory.childDirectory('.symlinks');
podPlatformString = 'osx'; podPlatformString = 'osx';
platformName = 'macOS'; platformName = 'macOS';
docsLink = 'https://docs.flutter.dev/deployment/macos'; docsLink = 'https://flutter.dev/to/macos-deploy';
} else { } else {
return; return;
} }

View File

@ -257,7 +257,7 @@ class Plugin {
const String errorMessage = const String errorMessage =
'The flutter.plugin.platforms key cannot be used in combination with the old ' 'The flutter.plugin.platforms key cannot be used in combination with the old '
'flutter.plugin.{androidPackage,iosPrefix,pluginClass} keys. ' 'flutter.plugin.{androidPackage,iosPrefix,pluginClass} keys. '
'See: https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin'; 'See: https://flutter.dev/to/pubspec-plugin-platforms';
return <String>[errorMessage]; return <String>[errorMessage];
} }
@ -265,7 +265,7 @@ class Plugin {
const String errorMessage = const String errorMessage =
'Cannot find the `flutter.plugin.platforms` key in the `pubspec.yaml` file. ' 'Cannot find the `flutter.plugin.platforms` key in the `pubspec.yaml` file. '
'An instruction to format the `pubspec.yaml` can be found here: ' 'An instruction to format the `pubspec.yaml` can be found here: '
'https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms'; 'https://flutter.dev/to/pubspec-plugin-platforms';
return <String>[errorMessage]; return <String>[errorMessage];
} }

View File

@ -75,7 +75,7 @@ class CrashReporter {
final String similarIssuesURL = GitHubTemplateCreator.toolCrashSimilarIssuesURL(details.error.toString()); final String similarIssuesURL = GitHubTemplateCreator.toolCrashSimilarIssuesURL(details.error.toString());
_logger.printStatus('$similarIssuesURL\n', wrap: false); _logger.printStatus('$similarIssuesURL\n', wrap: false);
_logger.printStatus('To report your crash to the Flutter team, first read the guide to filing a bug.', emphasis: true); _logger.printStatus('To report your crash to the Flutter team, first read the guide to filing a bug.', emphasis: true);
_logger.printStatus('https://flutter.dev/docs/resources/bug-reports\n', wrap: false); _logger.printStatus('https://flutter.dev/to/report-bugs\n', wrap: false);
_logger.printStatus('Create a new GitHub issue by pasting this link into your browser and completing the issue template. Thank you!', emphasis: true); _logger.printStatus('Create a new GitHub issue by pasting this link into your browser and completing the issue template. Thank you!', emphasis: true);

View File

@ -31,7 +31,7 @@ const String _kFlutterFirstRunMessage = '''
crash reports to Google. crash reports to Google.
Read about data we send with crash reports: Read about data we send with crash reports:
https://flutter.dev/docs/reference/crash-reporting https://flutter.dev/to/crash-reporting
See Google's privacy policy: ║ See Google's privacy policy: ║
https://policies.google.com/privacy https://policies.google.com/privacy

View File

@ -1424,7 +1424,7 @@ abstract class FlutterCommand extends Command<void> {
String get deprecationWarning { String get deprecationWarning {
return '${globals.logger.terminal.warningMark} The "$name" command is ' return '${globals.logger.terminal.warningMark} The "$name" command is '
'deprecated and will be removed in a future version of Flutter. ' 'deprecated and will be removed in a future version of Flutter. '
'See https://flutter.dev/docs/development/tools/sdk/releases ' 'See https://flutter.dev/to/previous-releases '
'for previous releases of Flutter.\n'; 'for previous releases of Flutter.\n';
} }

View File

@ -2,4 +2,4 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
const String kWasmMoreInfo = 'See https://flutter.dev/wasm for more information.'; const String kWasmMoreInfo = 'See https://flutter.dev/to/wasm for more information.';

View File

@ -55,7 +55,7 @@ Future<void> buildWindows(
if (!windowsProject.cmakeFile.existsSync()) { if (!windowsProject.cmakeFile.existsSync()) {
throwToolExit( throwToolExit(
'No Windows desktop project configured. See ' 'No Windows desktop project configured. See '
'https://docs.flutter.dev/desktop#add-desktop-support-to-an-existing-flutter-app ' 'https://flutter.dev/to/add-desktop-support '
'to learn about adding Windows support to a project.'); 'to learn about adding Windows support to a project.');
} }

View File

@ -409,7 +409,7 @@ class IosProject extends XcodeBasedProject {
Future<String> _parseHostAppBundleName(BuildInfo? buildInfo) async { Future<String> _parseHostAppBundleName(BuildInfo? buildInfo) async {
// The product name and bundle name are derived from the display name, which the user // The product name and bundle name are derived from the display name, which the user
// is instructed to change in Xcode as part of deploying to the App Store. // is instructed to change in Xcode as part of deploying to the App Store.
// https://flutter.dev/docs/deployment/ios#review-xcode-project-settings // https://flutter.dev/to/xcode-name-config
// The only source of truth for the name is Xcode's interpretation of the build settings. // The only source of truth for the name is Xcode's interpretation of the build settings.
String? productName; String? productName;
if (globals.xcodeProjectInterpreter?.isInstalled ?? false) { if (globals.xcodeProjectInterpreter?.isInstalled ?? false) {

View File

@ -99,10 +99,10 @@ flutter:
# - images/a_dot_ham.jpeg # - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware # https://flutter.dev/to/resolution-aware-images
# For details regarding adding assets from package dependencies, see # For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages # https://flutter.dev/to/asset-from-package
# To add custom fonts to your application, add a fonts section here, # To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a # in this "flutter" section. Each entry in this list should have a
@ -122,5 +122,5 @@ flutter:
# weight: 700 # weight: 700
# #
# For details regarding fonts from package dependencies, # For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages # see https://flutter.dev/to/font-from-package
{{/withEmptyMain}} {{/withEmptyMain}}

View File

@ -6,7 +6,7 @@
{{/withPlatformChannelPluginHook}} {{/withPlatformChannelPluginHook}}
// //
// For more information about Flutter integration tests, please see // For more information about Flutter integration tests, please see
// https://docs.flutter.dev/cookbook/testing/integration/introduction // https://flutter.dev/to/integration-testing
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';

View File

@ -23,7 +23,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "{{androidIdentifier}}" applicationId = "{{androidIdentifier}}"
// You can update the following values to match your application needs. // You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode versionCode = flutter.versionCode

View File

@ -23,7 +23,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "{{androidIdentifier}}" applicationId = "{{androidIdentifier}}"
// You can update the following values to match your application needs. // You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode versionCode = flutter.versionCode

View File

@ -7,7 +7,7 @@ gradle-wrapper.jar
GeneratedPluginRegistrant.java GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore. # Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app # See https://flutter.dev/to/reference-keystore
key.properties key.properties
**/*.keystore **/*.keystore
**/*.jks **/*.jks

View File

@ -8,4 +8,4 @@ For help getting started with Flutter development, view the online
[documentation](https://flutter.dev/). [documentation](https://flutter.dev/).
For instructions integrating Flutter modules to your existing applications, For instructions integrating Flutter modules to your existing applications,
see the [add-to-app documentation](https://flutter.dev/docs/development/add-to-app). see the [add-to-app documentation](https://flutter.dev/to/add-to-app).

View File

@ -49,10 +49,10 @@ flutter:
# - images/a_dot_ham.jpeg # - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware # https://flutter.dev/to/resolution-aware-images
# For details regarding adding assets from package dependencies, see # For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages # https://flutter.dev/to/asset-from-package
# To add Flutter specific custom fonts to your application, add a fonts # To add Flutter specific custom fonts to your application, add a fonts
# section here, in this "flutter" section. Each entry in this list should # section here, in this "flutter" section. Each entry in this list should
@ -72,7 +72,7 @@ flutter:
# weight: 700 # weight: 700
# #
# For details regarding fonts from package dependencies, # For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages # see https://flutter.dev/to/font-from-package
# This section identifies your Flutter project as a module meant for # This section identifies your Flutter project as a module meant for

View File

@ -3,12 +3,12 @@ This README describes the package. If you publish this package to pub.dev,
this README's contents appear on the landing page for your package. this README's contents appear on the landing page for your package.
For information about how to write a good package README, see the guide for For information about how to write a good package README, see the guide for
[writing package pages](https://dart.dev/guides/libraries/writing-package-pages). [writing package pages](https://dart.dev/tools/pub/writing-package-pages).
For general information about developing packages, see the Dart guide for For general information about developing packages, see the Dart guide for
[creating packages](https://dart.dev/guides/libraries/create-library-packages) [creating packages](https://dart.dev/guides/libraries/create-packages)
and the Flutter guide for and the Flutter guide for
[developing packages and plugins](https://flutter.dev/developing-packages). [developing packages and plugins](https://flutter.dev/to/develop-packages).
--> -->
TODO: Put a short description of the package here that helps potential users TODO: Put a short description of the package here that helps potential users

View File

@ -28,10 +28,10 @@ flutter:
# - images/a_dot_ham.jpeg # - images/a_dot_ham.jpeg
# #
# For details regarding assets in packages, see # For details regarding assets in packages, see
# https://flutter.dev/assets-and-images/#from-packages # https://flutter.dev/to/asset-from-package
# #
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware # https://flutter.dev/to/resolution-aware-images
# To add custom fonts to your package, add a fonts section here, # To add custom fonts to your package, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a # in this "flutter" section. Each entry in this list should have a
@ -51,4 +51,4 @@ flutter:
# weight: 700 # weight: 700
# #
# For details regarding fonts in packages, see # For details regarding fonts in packages, see
# https://flutter.dev/custom-fonts/#from-packages # https://flutter.dev/to/font-from-package

View File

@ -5,7 +5,7 @@
## Getting Started ## Getting Started
This project is a starting point for a Flutter This project is a starting point for a Flutter
[FFI package](https://docs.flutter.dev/development/platform-integration/c-interop), [FFI package](https://flutter.dev/to/ffi-package),
a specialized package that includes native code directly invoked with Dart FFI. a specialized package that includes native code directly invoked with Dart FFI.
## Project structure ## Project structure
@ -45,5 +45,5 @@ For example, see `sumAsync` in `lib/{{projectName}}.dart`.
## Flutter help ## Flutter help
For help getting started with Flutter, view our For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials, [online documentation](https://docs.flutter.dev), which offers tutorials,
samples, guidance on mobile development, and a full API reference. samples, guidance on mobile development, and a full API reference.

View File

@ -5,16 +5,16 @@
## Getting Started ## Getting Started
This project is a starting point for a Flutter This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/), [plug-in package](https://flutter.dev/to/develop-plugins),
a specialized package that includes platform-specific implementation code for a specialized package that includes platform-specific implementation code for
Android and/or iOS. Android and/or iOS.
For help getting started with Flutter development, view the For help getting started with Flutter development, view the
[online documentation](https://flutter.dev/docs), which offers tutorials, [online documentation](https://docs.flutter.dev), which offers tutorials,
samples, guidance on mobile development, and a full API reference. samples, guidance on mobile development, and a full API reference.
{{#no_platforms}} {{#no_platforms}}
The plugin project was generated without specifying the `--platforms` flag, no platforms are currently supported. The plugin project was generated without specifying the `--platforms` flag, no platforms are currently supported.
To add platforms, run `flutter create -t plugin --platforms <platforms> .` in this directory. To add platforms, run `flutter create -t plugin --platforms <platforms> .` in this directory.
You can also find a detailed instruction on how to add platforms in the `pubspec.yaml` at https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms. You can also find a detailed instruction on how to add platforms in the `pubspec.yaml` at https://flutter.dev/to/pubspec-plugin-platforms.
{{/no_platforms}} {{/no_platforms}}

View File

@ -4,7 +4,7 @@
// platform, run `flutter create -t plugin --platforms <platforms> .` under the // platform, run `flutter create -t plugin --platforms <platforms> .` under the
// same directory. You can also find a detailed instruction on how to add // same directory. You can also find a detailed instruction on how to add
// platforms in the `pubspec.yaml` at // platforms in the `pubspec.yaml` at
// https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms. // https://flutter.dev/to/pubspec-plugin-platforms.
{{/no_platforms}} {{/no_platforms}}
import '{{projectName}}_platform_interface.dart'; import '{{projectName}}_platform_interface.dart';

View File

@ -5,7 +5,7 @@
## Getting Started ## Getting Started
This project is a starting point for a Flutter This project is a starting point for a Flutter
[FFI plugin](https://docs.flutter.dev/development/platform-integration/c-interop), [FFI plugin](https://flutter.dev/to/ffi-package),
a specialized package that includes native code directly invoked with Dart FFI. a specialized package that includes native code directly invoked with Dart FFI.
## Project structure ## Project structure
@ -87,11 +87,11 @@ For example, see `sumAsync` in `lib/{{projectName}}.dart`.
## Flutter help ## Flutter help
For help getting started with Flutter, view our For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials, [online documentation](https://docs.flutter.dev), which offers tutorials,
samples, guidance on mobile development, and a full API reference. samples, guidance on mobile development, and a full API reference.
{{#no_platforms}} {{#no_platforms}}
The plugin project was generated without specifying the `--platforms` flag, so no platforms are currently supported. The plugin project was generated without specifying the `--platforms` flag, so no platforms are currently supported.
To add platforms, run `flutter create -t plugin_ffi --platforms <platforms> .` in this directory. To add platforms, run `flutter create -t plugin_ffi --platforms <platforms> .` in this directory.
You can also find a detailed instruction on how to add platforms in the `pubspec.yaml` at https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms. You can also find a detailed instruction on how to add platforms in the `pubspec.yaml` at https://flutter.dev/to/pubspec-plugin-platforms.
{{/no_platforms}} {{/no_platforms}}

View File

@ -4,7 +4,7 @@
// To add platforms, run `flutter create -t plugin_ffi --platforms <platforms> .` // To add platforms, run `flutter create -t plugin_ffi --platforms <platforms> .`
// in this directory. You can also find a detailed instruction on how to // in this directory. You can also find a detailed instruction on how to
// add platforms in the `pubspec.yaml` at // add platforms in the `pubspec.yaml` at
// https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms. // https://flutter.dev/to/pubspec-plugin-platforms.
{{/no_platforms}} {{/no_platforms}}
import 'dart:async'; import 'dart:async';

View File

@ -50,7 +50,7 @@ flutter:
# This FFI plugin project was generated without specifying any # This FFI plugin project was generated without specifying any
# platforms with the `--platform` argument. If you see the `some_platform` map below, remove it and # platforms with the `--platform` argument. If you see the `some_platform` map below, remove it and
# then add platforms following the instruction here: # then add platforms following the instruction here:
# https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms # https://flutter.dev/to/pubspec-plugin-platforms
# ------------------- # -------------------
some_platform: some_platform:
ffiPlugin: true ffiPlugin: true
@ -84,7 +84,7 @@ flutter:
# This plugin project was generated without specifying any # This plugin project was generated without specifying any
# platforms with the `--platform` argument. If you see the `some_platform` map below, remove it and # platforms with the `--platform` argument. If you see the `some_platform` map below, remove it and
# then add platforms following the instruction here: # then add platforms following the instruction here:
# https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms # https://flutter.dev/to/pubspec-plugin-platforms
# ------------------- # -------------------
some_platform: some_platform:
pluginClass: somePluginClass pluginClass: somePluginClass
@ -124,10 +124,10 @@ flutter:
# - images/a_dot_ham.jpeg # - images/a_dot_ham.jpeg
# #
# For details regarding assets in packages, see # For details regarding assets in packages, see
# https://flutter.dev/assets-and-images/#from-packages # https://flutter.dev/to/asset-from-package
# #
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware # https://flutter.dev/to/resolution-aware-images
# To add custom fonts to your plugin package, add a fonts section here, # To add custom fonts to your plugin package, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a # in this "flutter" section. Each entry in this list should have a
@ -147,4 +147,4 @@ flutter:
# weight: 700 # weight: 700
# #
# For details regarding fonts in packages, see # For details regarding fonts in packages, see
# https://flutter.dev/custom-fonts/#from-packages # https://flutter.dev/to/font-from-package

View File

@ -6,10 +6,10 @@
This project is a starting point for a Flutter application that follows the This project is a starting point for a Flutter application that follows the
[simple app state management [simple app state management
tutorial](https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple). tutorial](https://flutter.dev/to/state-management-sample).
For help getting started with Flutter development, view the For help getting started with Flutter development, view the
[online documentation](https://flutter.dev/docs), which offers tutorials, [online documentation](https://docs.flutter.dev), which offers tutorials,
samples, guidance on mobile development, and a full API reference. samples, guidance on mobile development, and a full API reference.
## Assets ## Assets
@ -18,7 +18,7 @@ The `assets` directory houses images, fonts, and any other files you want to
include with your application. include with your application.
The `assets/images` directory contains [resolution-aware The `assets/images` directory contains [resolution-aware
images](https://flutter.dev/docs/development/ui/assets-and-images#resolution-aware). images](https://flutter.dev/to/resolution-aware-images).
## Localization ## Localization
@ -26,5 +26,4 @@ This project generates localized messages based on arb files found in
the `lib/src/localization` directory. the `lib/src/localization` directory.
To support additional languages, please visit the tutorial on To support additional languages, please visit the tutorial on
[Internationalizing Flutter [Internationalizing Flutter apps](https://flutter.dev/to/internationalization).
apps](https://flutter.dev/docs/development/accessibility-and-localization/internationalization)

View File

@ -2,7 +2,7 @@
// //
// A unit test tests a single function, method, or class. To learn more about // A unit test tests a single function, method, or class. To learn more about
// writing unit tests, visit // writing unit tests, visit
// https://flutter.dev/docs/cookbook/testing/unit/introduction // https://flutter.dev/to/unit-testing
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';

View File

@ -5,7 +5,7 @@
// gestures. You can also use WidgetTester to find child widgets in the widget // gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct. // tree, read text, and verify that the values of widget properties are correct.
// //
// Visit https://flutter.dev/docs/cookbook/testing/widget/introduction for // Visit https://flutter.dev/to/widget-testing for
// more information about Widget testing. // more information about Widget testing.
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';

View File

@ -1147,7 +1147,7 @@ void main() {
)); ));
expect( expect(
logger.statusText, logger.statusText,
contains('To update the settings, please refer to https://docs.flutter.dev/deployment/ios') contains('To update the settings, please refer to https://flutter.dev/to/ios-deploy')
); );
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FileSystem: () => fileSystem, FileSystem: () => fileSystem,
@ -1206,7 +1206,7 @@ void main() {
); );
expect( expect(
logger.statusText, logger.statusText,
contains('To update the settings, please refer to https://docs.flutter.dev/deployment/ios') contains('To update the settings, please refer to https://flutter.dev/to/ios-deploy')
); );
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FileSystem: () => fileSystem, FileSystem: () => fileSystem,
@ -1264,7 +1264,7 @@ void main() {
); );
expect( expect(
logger.statusText, logger.statusText,
contains('To update the settings, please refer to https://docs.flutter.dev/deployment/ios'), contains('To update the settings, please refer to https://flutter.dev/to/ios-deploy'),
); );
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FileSystem: () => fileSystem, FileSystem: () => fileSystem,

View File

@ -141,7 +141,7 @@ void main() {
expect(createTestCommandRunner(command).run( expect(createTestCommandRunner(command).run(
const <String>['build', 'linux', '--no-pub'] const <String>['build', 'linux', '--no-pub']
), throwsToolExit(message: 'No Linux desktop project configured. See ' ), throwsToolExit(message: 'No Linux desktop project configured. See '
'https://docs.flutter.dev/desktop#add-desktop-support-to-an-existing-flutter-app ' 'https://flutter.dev/to/add-desktop-support '
'to learn about adding Linux support to a project.')); 'to learn about adding Linux support to a project.'));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
Platform: () => linuxPlatform, Platform: () => linuxPlatform,

View File

@ -181,7 +181,7 @@ STDERR STUFF
expect(createTestCommandRunner(command).run( expect(createTestCommandRunner(command).run(
const <String>['build', 'macos', '--no-pub'] const <String>['build', 'macos', '--no-pub']
), throwsToolExit(message: 'No macOS desktop project configured. See ' ), throwsToolExit(message: 'No macOS desktop project configured. See '
'https://docs.flutter.dev/desktop#add-desktop-support-to-an-existing-flutter-app ' 'https://flutter.dev/to/add-desktop-support '
'to learn about adding macOS support to a project.')); 'to learn about adding macOS support to a project.'));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
Platform: () => macosPlatform, Platform: () => macosPlatform,

View File

@ -152,7 +152,7 @@ void main() {
expect(createTestCommandRunner(command).run( expect(createTestCommandRunner(command).run(
const <String>['windows', '--no-pub'] const <String>['windows', '--no-pub']
), throwsToolExit(message: 'No Windows desktop project configured. See ' ), throwsToolExit(message: 'No Windows desktop project configured. See '
'https://docs.flutter.dev/desktop#add-desktop-support-to-an-existing-flutter-app ' 'https://flutter.dev/to/add-desktop-support '
'to learn about adding Windows support to a project.')); 'to learn about adding Windows support to a project.'));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
Platform: () => windowsPlatform, Platform: () => windowsPlatform,

View File

@ -179,7 +179,7 @@ void main() {
result.messages, result.messages,
contains(const ValidationMessage.error( contains(const ValidationMessage.error(
'Environment variable PUB_HOSTED_URL does not specify a valid URL: "::Not A Uri::"\n' 'Environment variable PUB_HOSTED_URL does not specify a valid URL: "::Not A Uri::"\n'
'Please see https://flutter.dev/community/china for an example of how to use it.', 'Please see https://flutter.dev/to/use-mirror-site for an example of how to use it.',
)), )),
); );
}); });
@ -204,7 +204,7 @@ void main() {
result.messages, result.messages,
contains(const ValidationMessage.error( contains(const ValidationMessage.error(
'Environment variable FLUTTER_STORAGE_BASE_URL does not specify a valid URL: ""\n' 'Environment variable FLUTTER_STORAGE_BASE_URL does not specify a valid URL: ""\n'
'Please see https://flutter.dev/community/china for an example of how to use it.' 'Please see https://flutter.dev/to/use-mirror-site for an example of how to use it.'
)), )),
); );
}); });

View File

@ -3288,7 +3288,7 @@ void main() {
await runner.run(<String>['create', '--no-pub', '--template=plugin', projectDir.path]); await runner.run(<String>['create', '--no-pub', '--template=plugin', projectDir.path]);
expect(logger.errorText, contains(_kNoPlatformsMessage)); expect(logger.errorText, contains(_kNoPlatformsMessage));
expect(logger.statusText, contains('To add platforms, run `flutter create -t plugin --platforms <platforms> .` under ${globals.fs.path.normalize(globals.fs.path.relative(projectDir.path))}.')); expect(logger.statusText, contains('To add platforms, run `flutter create -t plugin --platforms <platforms> .` under ${globals.fs.path.normalize(globals.fs.path.relative(projectDir.path))}.'));
expect(logger.statusText, contains('For more information, see https://flutter.dev/go/plugin-platforms.')); expect(logger.statusText, contains('For more information, see https://flutter.dev/to/pubspec-plugin-platforms.'));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FeatureFlags: () => TestFeatureFlags(), FeatureFlags: () => TestFeatureFlags(),
@ -3304,7 +3304,7 @@ void main() {
await runner.run(<String>['create', '--no-pub', '--template=plugin_ffi', projectDir.path]); await runner.run(<String>['create', '--no-pub', '--template=plugin_ffi', projectDir.path]);
expect(logger.errorText, contains(_kNoPlatformsMessage)); expect(logger.errorText, contains(_kNoPlatformsMessage));
expect(logger.statusText, contains('To add platforms, run `flutter create -t plugin_ffi --platforms <platforms> .` under ${globals.fs.path.normalize(globals.fs.path.relative(projectDir.path))}.')); expect(logger.statusText, contains('To add platforms, run `flutter create -t plugin_ffi --platforms <platforms> .` under ${globals.fs.path.normalize(globals.fs.path.relative(projectDir.path))}.'));
expect(logger.statusText, contains('For more information, see https://flutter.dev/go/plugin-platforms.')); expect(logger.statusText, contains('For more information, see https://flutter.dev/to/pubspec-plugin-platforms.'));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FeatureFlags: () => TestFeatureFlags(), FeatureFlags: () => TestFeatureFlags(),

View File

@ -202,7 +202,7 @@ void main() {
throwsToolExit(message: 'Unable to upgrade Flutter: Your Flutter checkout ' throwsToolExit(message: 'Unable to upgrade Flutter: Your Flutter checkout '
'is currently not on a release branch.\n' 'is currently not on a release branch.\n'
'Use "flutter channel" to switch to an official channel, and retry. ' 'Use "flutter channel" to switch to an official channel, and retry. '
'Alternatively, re-install Flutter by going to https://flutter.dev/docs/get-started/install.' 'Alternatively, re-install Flutter by going to https://flutter.dev/setup.'
), ),
); );
expect(processManager, hasNoRemainingExpectations); expect(processManager, hasNoRemainingExpectations);
@ -230,7 +230,7 @@ void main() {
() async => realCommandRunner.fetchLatestVersion(localVersion: FakeFlutterVersion()), () async => realCommandRunner.fetchLatestVersion(localVersion: FakeFlutterVersion()),
throwsToolExit(message: 'Unable to upgrade Flutter: The current Flutter ' throwsToolExit(message: 'Unable to upgrade Flutter: The current Flutter '
'branch/channel is not tracking any remote repository.\n' 'branch/channel is not tracking any remote repository.\n'
'Re-install Flutter by going to https://flutter.dev/docs/get-started/install.' 'Re-install Flutter by going to https://flutter.dev/setup.'
), ),
); );
expect(processManager, hasNoRemainingExpectations); expect(processManager, hasNoRemainingExpectations);

View File

@ -91,7 +91,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.asset_sample" applicationId "com.example.asset_sample"
// You can update the following values to match your application needs. // You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://flutter.dev/to/review-gradle-config.
''' + minSdkVersionString + r''' ''' + minSdkVersionString + r'''
targetSdkVersion flutter.targetSdkVersion targetSdkVersion flutter.targetSdkVersion

View File

@ -698,8 +698,7 @@ assembleProfile
'│ Following this change, your app will not be available to users running Android SDKs below 21. │\n' '│ Following this change, your app will not be available to users running Android SDKs below 21. │\n'
'│ Consider searching for a version of this plugin that supports these lower versions of the │\n' '│ Consider searching for a version of this plugin that supports these lower versions of the │\n'
'│ Android SDK instead. │\n' '│ Android SDK instead. │\n'
'│ For more information, see: │\n' '│ For more information, see: https://flutter.dev/to/review-gradle-config │\n'
'│ https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration │\n'
'└───────────────────────────────────────────────────────────────────────────────────────────────┘\n' '└───────────────────────────────────────────────────────────────────────────────────────────────┘\n'
) )
); );
@ -1257,7 +1256,7 @@ Could not compile build file '…/example/android/build.gradle'.
// Ensure the error notes the incompatible Gradle/AGP/Java versions, links to related resources, // Ensure the error notes the incompatible Gradle/AGP/Java versions, links to related resources,
// and a portion of the path to where to change their gradle version. // and a portion of the path to where to change their gradle version.
expect(testLogger.statusText, contains('Gradle version is incompatible with the Java version')); expect(testLogger.statusText, contains('Gradle version is incompatible with the Java version'));
expect(testLogger.statusText, contains('docs.flutter.dev/go/android-java-gradle-error')); expect(testLogger.statusText, contains('flutter.dev/to/to/java-gradle-incompatibility'));
expect(testLogger.statusText, contains('gradle-wrapper.properties')); expect(testLogger.statusText, contains('gradle-wrapper.properties'));
expect(testLogger.statusText, contains('https://docs.gradle.org/current/userguide/compatibility.html#java')); expect(testLogger.statusText, contains('https://docs.gradle.org/current/userguide/compatibility.html#java'));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{

View File

@ -572,7 +572,7 @@ flutter:
' }\n' ' }\n'
' }\n' ' }\n'
'\n' '\n'
'To learn more, visit https://flutter.dev/go/build-aar\n' 'To learn more, visit https://flutter.dev/to/integrate-android-archive\n'
) )
); );
}); });
@ -610,7 +610,7 @@ flutter:
" releaseImplementation 'com.mycompany:flutter_release:1.0'\n" " releaseImplementation 'com.mycompany:flutter_release:1.0'\n"
' }\n' ' }\n'
'\n' '\n'
'To learn more, visit https://flutter.dev/go/build-aar\n' 'To learn more, visit https://flutter.dev/to/integrate-android-archive\n'
) )
); );
}); });
@ -648,7 +648,7 @@ flutter:
" debugImplementation 'com.mycompany:flutter_debug:1.0'\n" " debugImplementation 'com.mycompany:flutter_debug:1.0'\n"
' }\n' ' }\n'
'\n' '\n'
'To learn more, visit https://flutter.dev/go/build-aar\n' 'To learn more, visit https://flutter.dev/to/integrate-android-archive\n'
) )
); );
}); });
@ -698,7 +698,7 @@ flutter:
' }\n' ' }\n'
' }\n' ' }\n'
'\n' '\n'
'To learn more, visit https://flutter.dev/go/build-aar\n' 'To learn more, visit https://flutter.dev/to/integrate-android-archive\n'
) )
); );
}); });

View File

@ -15,10 +15,10 @@ void main() {
final FakePlatform windowsPlatform = FakePlatform(operatingSystem: 'windows'); final FakePlatform windowsPlatform = FakePlatform(operatingSystem: 'windows');
void checkInstallationURL(_InstallationMessage message) { void checkInstallationURL(_InstallationMessage message) {
expect(message(macPlatform), contains('https://flutter.dev/docs/get-started/install/macos#android-setup')); expect(message(macPlatform), contains('https://flutter.dev/to/macos-android-setup'));
expect(message(linuxPlatform), contains('https://flutter.dev/docs/get-started/install/linux#android-setup')); expect(message(linuxPlatform), contains('https://flutter.dev/to/linux-android-setup'));
expect(message(windowsPlatform), contains('https://flutter.dev/docs/get-started/install/windows#android-setup')); expect(message(windowsPlatform), contains('https://flutter.dev/to/windows-android-setup'));
expect(message(FakePlatform(operatingSystem: '')), contains('https://flutter.dev/docs/get-started/install ')); expect(message(FakePlatform(operatingSystem: '')), contains('https://flutter.dev/to/android-setup'));
} }
testWithoutContext('Android installation instructions', () { testWithoutContext('Android installation instructions', () {

View File

@ -304,7 +304,7 @@ void main() {
expect(artifact2.didUpdate, false); expect(artifact2.didUpdate, false);
expect( expect(
logger.errorText, logger.errorText,
contains('https://flutter.dev/community/china'), contains('https://flutter.dev/to/china-setup'),
); );
}); });

View File

@ -1183,7 +1183,7 @@ void main() {
'Invalid plugin specification url_launcher_macos.\n' 'Invalid plugin specification url_launcher_macos.\n'
'Cannot find the `flutter.plugin.platforms` key in the `pubspec.yaml` file. ' 'Cannot find the `flutter.plugin.platforms` key in the `pubspec.yaml` file. '
'An instruction to format the `pubspec.yaml` can be found here: ' 'An instruction to format the `pubspec.yaml` can be found here: '
'https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms' 'https://flutter.dev/to/pubspec-plugin-platforms'
), ),
); );
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{

View File

@ -266,7 +266,7 @@ void main() {
const ValidationMessage.hint( const ValidationMessage.hint(
'Flutter version 1.0.0 on channel [user-branch] at /sdk/flutter\n' 'Flutter version 1.0.0 on channel [user-branch] at /sdk/flutter\n'
'Currently on an unknown channel. Run `flutter channel` to switch to an official channel.\n' 'Currently on an unknown channel. Run `flutter channel` to switch to an official channel.\n'
"If that doesn't fix the issue, reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install." "If that doesn't fix the issue, reinstall Flutter by following instructions at https://flutter.dev/setup."
), ),
const ValidationMessage( const ValidationMessage(
'If those were intentional, you can disregard the above warnings; however it is ' 'If those were intentional, you can disregard the above warnings; however it is '
@ -299,7 +299,7 @@ void main() {
const ValidationMessage.hint( const ValidationMessage.hint(
'Flutter version 0.0.0-unknown on channel beta at /sdk/flutter\n' 'Flutter version 0.0.0-unknown on channel beta at /sdk/flutter\n'
'Cannot resolve current version, possibly due to local changes.\n' 'Cannot resolve current version, possibly due to local changes.\n'
'Reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install.' 'Reinstall Flutter by following instructions at https://flutter.dev/setup.'
), ),
const ValidationMessage( const ValidationMessage(
'If those were intentional, you can disregard the above warnings; however it is ' 'If those were intentional, you can disregard the above warnings; however it is '
@ -390,7 +390,7 @@ void main() {
messages: containsAll(<ValidationMessage>[ messages: containsAll(<ValidationMessage>[
const ValidationMessage.hint( const ValidationMessage.hint(
'Unknown upstream repository.\n' 'Unknown upstream repository.\n'
'Reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install.' 'Reinstall Flutter by following instructions at https://flutter.dev/setup.'
), ),
const ValidationMessage( const ValidationMessage(
'If those were intentional, you can disregard the above warnings; however it is ' 'If those were intentional, you can disregard the above warnings; however it is '

View File

@ -51,7 +51,7 @@ void main() {
ValidationMessage.error('Flutter plugin version 0.1.3 - the recommended minimum version is 16.0.0'), ValidationMessage.error('Flutter plugin version 0.1.3 - the recommended minimum version is 16.0.0'),
ValidationMessage('Dart plugin version 162.2485'), ValidationMessage('Dart plugin version 162.2485'),
ValidationMessage('For information about installing plugins, see\n' ValidationMessage('For information about installing plugins, see\n'
'https://flutter.dev/intellij-setup/#installing-the-plugins'), 'https://flutter.dev/to/intellij-setup'),
]); ]);
}); });

View File

@ -571,7 +571,7 @@ end''');
logger.errorText, logger.errorText,
contains( contains(
"To build, increase your application's deployment target to at least " "To build, increase your application's deployment target to at least "
'15.0 as described at https://docs.flutter.dev/deployment/ios' '15.0 as described at https://flutter.dev/to/ios-deploy'
), ),
); );
}); });
@ -631,7 +631,7 @@ end''');
logger.errorText, logger.errorText,
contains( contains(
"To build, increase your application's deployment target to at least " "To build, increase your application's deployment target to at least "
'15.0 as described at https://docs.flutter.dev/deployment/ios' '15.0 as described at https://flutter.dev/to/ios-deploy'
), ),
); );
}); });
@ -692,7 +692,7 @@ end''');
logger.errorText, logger.errorText,
contains( contains(
"To build, increase your application's deployment target to at least " "To build, increase your application's deployment target to at least "
'15.0 as described at https://docs.flutter.dev/deployment/ios' '15.0 as described at https://flutter.dev/to/ios-deploy'
), ),
); );
}); });
@ -756,7 +756,7 @@ end''');
logger.errorText, logger.errorText,
contains( contains(
"To build, increase your application's deployment target as " "To build, increase your application's deployment target as "
'described at https://docs.flutter.dev/deployment/ios', 'described at https://flutter.dev/to/ios-deploy',
), ),
); );
expect( expect(
@ -961,7 +961,7 @@ end''');
logger.errorText, logger.errorText,
contains( contains(
"To build, increase your application's deployment target to at least " "To build, increase your application's deployment target to at least "
'12.7 as described at https://docs.flutter.dev/deployment/macos' '12.7 as described at https://flutter.dev/to/macos-deploy'
), ),
); );
}); });
@ -1022,7 +1022,7 @@ end''');
logger.errorText, logger.errorText,
contains( contains(
"To build, increase your application's deployment target to at least " "To build, increase your application's deployment target to at least "
'12.7 as described at https://docs.flutter.dev/deployment/macos' '12.7 as described at https://flutter.dev/to/macos-deploy'
), ),
); );
}); });

View File

@ -397,7 +397,7 @@ void main() {
' ! App icon is set to the default placeholder icon. Replace with unique icons.\n', ' ! App icon is set to the default placeholder icon. Replace with unique icons.\n',
' ! App icon is using the incorrect size (e.g. Icon-App-20x20@1x.png).\n', ' ! App icon is using the incorrect size (e.g. Icon-App-20x20@1x.png).\n',
' ! Launch image is set to the default placeholder icon. Replace with unique launch image.\n', ' ! Launch image is set to the default placeholder icon. Replace with unique launch image.\n',
'To update the settings, please refer to https://docs.flutter.dev/deployment/ios\n', 'To update the settings, please refer to https://flutter.dev/to/ios-deploy\n',
]; ];
expect(expectedValidationMessages, unorderedEquals(expectedValidationMessages)); expect(expectedValidationMessages, unorderedEquals(expectedValidationMessages));

View File

@ -144,7 +144,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.testapp" applicationId "com.example.testapp"
// You can update the following values to match your application needs. // You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. // For more information, see: https://flutter.dev/to/review-gradle-config.
minSdkVersion flutter.minSdkVersion minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()

View File

@ -207,10 +207,10 @@ flutter:
- images/a_dot_ham.jpeg - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware. # https://flutter.dev/to/resolution-aware-images
# For details regarding adding assets from package dependencies, see # For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages # https://flutter.dev/to/asset-from-package
# To add custom fonts to your application, add a fonts section here, # To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a # in this "flutter" section. Each entry in this list should have a
@ -230,7 +230,7 @@ flutter:
# weight: 700 # weight: 700
# #
# For details regarding fonts from package dependencies, # For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages # see https://flutter.dev/to/font-from-package
'''; ''';
} }

View File

@ -22,7 +22,7 @@ void main() {
), ),
dartSdkPath: 'dart', dartSdkPath: 'dart',
); );
const String link = 'https://flutter.dev/docs/testing/integration-tests#running-in-a-browser'; const String link = 'https://flutter.dev/to/integration-test-on-web';
try { try {
await service.startTest( await service.startTest(
'foo.test', 'foo.test',