Enable missing_whitespace_between_adjacent_strings (#77027)

This commit is contained in:
Michael Goderbauer 2021-03-01 18:30:17 -08:00 committed by GitHub
parent 995bd989dd
commit fc99e7c0d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 64 additions and 69 deletions

View File

@ -125,7 +125,7 @@ linter:
# - lines_longer_than_80_chars # not required by flutter style # - lines_longer_than_80_chars # not required by flutter style
- list_remove_unrelated_type - list_remove_unrelated_type
# - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/sdk/issues/34181 # - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/sdk/issues/34181
# - missing_whitespace_between_adjacent_strings # not yet tested - missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list - no_adjacent_strings_in_list
# - no_default_cases # too many false positives # - no_default_cases # too many false positives
- no_duplicate_case_values - no_duplicate_case_values

View File

@ -16,7 +16,7 @@ const String textLotsOfText = 'Lorem ipsum dolor sit amet, consectetur '
'eleifend. Sagittis aliquam malesuada bibendum arcu vitae elementum. Massa sed ' 'eleifend. Sagittis aliquam malesuada bibendum arcu vitae elementum. Massa sed '
'elementum tempus egestas sed sed risus. Amet consectetur adipiscing elit ut ' 'elementum tempus egestas sed sed risus. Amet consectetur adipiscing elit ut '
'aliquam purus sit amet luctus. Elementum nisi quis eleifend quam adipiscing ' 'aliquam purus sit amet luctus. Elementum nisi quis eleifend quam adipiscing '
'vitae. Aliquam sem fringilla ut morbi tincidunt augue.' 'vitae. Aliquam sem fringilla ut morbi tincidunt augue. '
'👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦' '👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦'
'👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦' '👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦'
'👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦' '👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦'
@ -32,19 +32,19 @@ const String textLotsOfText = 'Lorem ipsum dolor sit amet, consectetur '
'👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦' '👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦'
'👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦' '👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦'
'👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦' '👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦'
'👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦' '👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦👨‍👩‍👦 '
'😀 😃 😄 😁 😆 😅 😂 🤣 🥲 ☺️ 😊 😇 🙂 🙃 😉 😌 😍 🥰 😘 😗 😙' '😀 😃 😄 😁 😆 😅 😂 🤣 🥲 ☺️ 😊 😇 🙂 🙃 😉 😌 😍 🥰 😘 😗 😙 '
'😚 😋 😛 😝 😜 🤪 🤨 🧐 🤓 😎 🥸 🤩 🥳 😏 😒 😞 😔 😟 😕 🙁 ☹' '😚 😋 😛 😝 😜 🤪 🤨 🧐 🤓 😎 🥸 🤩 🥳 😏 😒 😞 😔 😟 😕 🙁 ☹ '
' 😣 😖 😫 😩 🥺 😢 😭 😤 😠 😡 🤬 🤯 😳 🥵 🥶 😱 😨 😰 😥 😓 ' '😣 😖 😫 😩 🥺 😢 😭 😤 😠 😡 🤬 🤯 😳 🥵 🥶 😱 😨 😰 😥 😓 '
'🤗 🤔 🤭 🤫 🤥 😶 😐 😑 😬 🙄 😯 😦 😧 😮 😲 🥱 😴 🤤 😪 😵 ' '🤗 🤔 🤭 🤫 🤥 😶 😐 😑 😬 🙄 😯 😦 😧 😮 😲 🥱 😴 🤤 😪 😵 '
'🤐 🥴 🤢 🤮 🤧 😷 🤒 🤕 🤑 🤠 😈 👿 👹 👺 🤡 💩 👻 💀 ☠️ 👽 ' '🤐 🥴 🤢 🤮 🤧 😷 🤒 🤕 🤑 🤠 😈 👿 👹 👺 🤡 💩 👻 💀 ☠️ 👽 '
'👾 🤖 🎃 😺 😸 😹 😻 😼 😽 🙀 😿 😾' '👾 🤖 🎃 😺 😸 😹 😻 😼 😽 🙀 😿 😾 '
' 😣 😖 😫 😩 🥺 😢 😭 😤 😠 😡 🤬 🤯 😳 🥵 🥶 😱 😨 😰 😥 😓 ' '😣 😖 😫 😩 🥺 😢 😭 😤 😠 😡 🤬 🤯 😳 🥵 🥶 😱 😨 😰 😥 😓 '
'🤗 🤔 🤭 🤫 🤥 😶 😐 😑 😬 🙄 😯 😦 😧 😮 😲 🥱 😴 🤤 😪 😵 ' '🤗 🤔 🤭 🤫 🤥 😶 😐 😑 😬 🙄 😯 😦 😧 😮 😲 🥱 😴 🤤 😪 😵 '
'🤐 🥴 🤢 🤮 🤧 😷 🤒 🤕 🤑 🤠 😈 👿 👹 👺 🤡 💩 👻 💀 ☠️ 👽 ' '🤐 🥴 🤢 🤮 🤧 😷 🤒 🤕 🤑 🤠 😈 👿 👹 👺 🤡 💩 👻 💀 ☠️ 👽 '
'👾 🤖 🎃 😺 😸 😹 😻 😼 😽 🙀 😿 😾' '👾 🤖 🎃 😺 😸 😹 😻 😼 😽 🙀 😿 😾 '
'👋 🤚 🖐 ✋ 🖖 👌 🤌 🤏 ✌️ 🤞 🤟 🤘 🤙 👈 👉 👆 🖕 👇 ☝️ 👍 👎' '👋 🤚 🖐 ✋ 🖖 👌 🤌 🤏 ✌️ 🤞 🤟 🤘 🤙 👈 👉 👆 🖕 👇 ☝️ 👍 👎 '
' ✊ 👊 🤛 🤜 👏 🙌 👐 🤲 🤝 🙏 ✍️ 💅 🤳 💪 🦾 🦵 🦿 🦶 👣 👂 ' '✊ 👊 🤛 🤜 👏 🙌 👐 🤲 🤝 🙏 ✍️ 💅 🤳 💪 🦾 🦵 🦿 🦶 👣 👂 '
'🦻 👃 🫀 🫁 🧠 🦷 🦴 👀 👁 👅 👄 💋 🩸'; '🦻 👃 🫀 🫁 🧠 🦷 🦴 👀 👁 👅 👄 💋 🩸';
class TextFieldPage extends StatelessWidget { class TextFieldPage extends StatelessWidget {

View File

@ -750,9 +750,9 @@ class TimeseriesStats {
String toString() { String toString() {
final StringBuffer buffer = StringBuffer(); final StringBuffer buffer = StringBuffer();
buffer.writeln( buffer.writeln(
'$name: (samples: $cleanSampleCount clean/$outlierSampleCount outliers/' '$name: (samples: $cleanSampleCount clean/$outlierSampleCount '
'${cleanSampleCount + outlierSampleCount} measured/' 'outliers/${cleanSampleCount + outlierSampleCount} '
'${samples.length} total)'); 'measured/${samples.length} total)');
buffer.writeln(' | average: $average μs'); buffer.writeln(' | average: $average μs');
buffer.writeln(' | outlier average: $outlierAverage μs'); buffer.writeln(' | outlier average: $outlierAverage μs');
buffer.writeln(' | outlier/clean ratio: ${outlierRatio}x'); buffer.writeln(' | outlier/clean ratio: ${outlierRatio}x');

View File

@ -16,8 +16,8 @@ Future<void> main() => driver.integrationDriver(
if(benchmarkLiveResult['frame_count'] as int < 10 if(benchmarkLiveResult['frame_count'] as int < 10
|| fullyLiveResult['frame_count'] as int < 10) { || fullyLiveResult['frame_count'] as int < 10) {
print('Failure Details:\nNot Enough frames collected:' print('Failure Details:\nNot Enough frames collected: '
'benchmarkLive ${benchmarkLiveResult['frameCount']},' 'benchmarkLive ${benchmarkLiveResult['frameCount']}, '
'${fullyLiveResult['frameCount']}.'); '${fullyLiveResult['frameCount']}.');
exit(1); exit(1);
} }

View File

@ -9,7 +9,7 @@
void test1() { } void test1() { }
@Deprecated( @Deprecated(
'Missing space ->.' 'Missing space ->.' //ignore: missing_whitespace_between_adjacent_strings
'This feature was deprecated after v1.2.3.' 'This feature was deprecated after v1.2.3.'
) )
void test2() { } void test2() { }

View File

@ -72,8 +72,7 @@ abstract class DeviceDiscovery {
case DeviceOperatingSystem.fuchsia: case DeviceOperatingSystem.fuchsia:
return FuchsiaDeviceDiscovery(); return FuchsiaDeviceDiscovery();
case DeviceOperatingSystem.fake: case DeviceOperatingSystem.fake:
print('Looking for fake devices!' print('Looking for fake devices! You should not see this in release builds.');
'You should not see this in release builds.');
return FakeDeviceDiscovery(); return FakeDeviceDiscovery();
default: default:
throw DeviceException('Unsupported device operating system: $deviceOperatingSystem'); throw DeviceException('Unsupported device operating system: $deviceOperatingSystem');

View File

@ -126,7 +126,7 @@ void main() {
const String updateTaskJson = '{' const String updateTaskJson = '{'
'"CommitBranch":"master",' '"CommitBranch":"master",'
'"CommitSha":"$commitSha",' '"CommitSha":"$commitSha",'
'"BuilderName":"builder a b c",' '"BuilderName":"builder a b c",' //ignore: missing_whitespace_between_adjacent_strings
'"NewStatus":"Succeeded",' '"NewStatus":"Succeeded",'
'"ResultData":{},' '"ResultData":{},'
'"BenchmarkScoreKeys":[]}'; '"BenchmarkScoreKeys":[]}';

View File

@ -144,9 +144,7 @@ void main() {
expect(input2.value, 'Text2'); expect(input2.value, 'Text2');
}); });
testWidgets('Jump between TextFormFields with tab key after CapsLock is' testWidgets('Jump between TextFormFields with tab key after CapsLock is activated', (WidgetTester tester) async {
'activated',
(WidgetTester tester) async {
app.main(); app.main();
await tester.pumpAndSettle(); await tester.pumpAndSettle();

View File

@ -303,7 +303,7 @@ class IOSScrollViewFlingVelocityTracker extends VelocityTracker {
if (previousPoint == null || previousPoint.time <= time) if (previousPoint == null || previousPoint.time <= time)
return true; return true;
throw FlutterError( throw FlutterError(
'The position being added ($position) has a smaller timestamp ($time)' 'The position being added ($position) has a smaller timestamp ($time) '
'than its predecessor: $previousPoint.' 'than its predecessor: $previousPoint.'
); );
}()); }());

View File

@ -2306,10 +2306,10 @@ class ScaffoldState extends State<Scaffold> with TickerProviderStateMixin, Resto
assert(debugCheckHasScaffoldMessenger(context)); assert(debugCheckHasScaffoldMessenger(context));
assert( assert(
_scaffoldMessenger != null, _scaffoldMessenger != null,
'A SnackBar was shown by the ScaffoldMessenger, but has been called upon' 'A SnackBar was shown by the ScaffoldMessenger, but has been called upon '
'to be removed from a Scaffold that is not registered with a ' 'to be removed from a Scaffold that is not registered with a '
'ScaffoldMessenger, this can happen if a Scaffold has been rebuilt ' 'ScaffoldMessenger, this can happen if a Scaffold has been rebuilt '
'without an ancestor ScaffoldMessenger.', 'without an ancestor ScaffoldMessenger.',
); );
_scaffoldMessenger!.removeCurrentSnackBar(reason: reason); _scaffoldMessenger!.removeCurrentSnackBar(reason: reason);
return; return;
@ -2350,8 +2350,8 @@ class ScaffoldState extends State<Scaffold> with TickerProviderStateMixin, Resto
// ScaffoldMessenger is presenting SnackBars. // ScaffoldMessenger is presenting SnackBars.
assert(debugCheckHasScaffoldMessenger(context)); assert(debugCheckHasScaffoldMessenger(context));
assert( assert(
_scaffoldMessenger != null, _scaffoldMessenger != null,
'A SnackBar was shown by the ScaffoldMessenger, but has been called upon' 'A SnackBar was shown by the ScaffoldMessenger, but has been called upon '
'to be removed from a Scaffold that is not registered with a ' 'to be removed from a Scaffold that is not registered with a '
'ScaffoldMessenger, this can happen if a Scaffold has been rebuilt ' 'ScaffoldMessenger, this can happen if a Scaffold has been rebuilt '
'without an ancestor ScaffoldMessenger.', 'without an ancestor ScaffoldMessenger.',

View File

@ -5221,7 +5221,7 @@ class RenderFollowerLayer extends RenderProxyBox {
assert( assert(
link.leaderSize != null || (link.leader == null || leaderAnchor == Alignment.topLeft), link.leaderSize != null || (link.leader == null || leaderAnchor == Alignment.topLeft),
'$link: layer is linked to ${link.leader} but a valid leaderSize is not set. ' '$link: layer is linked to ${link.leader} but a valid leaderSize is not set. '
'leaderSize is required when leaderAnchor is not Alignment.topLeft' 'leaderSize is required when leaderAnchor is not Alignment.topLeft '
'(current value is $leaderAnchor).', '(current value is $leaderAnchor).',
); );
final Offset effectiveLinkedOffset = leaderSize == null final Offset effectiveLinkedOffset = leaderSize == null

View File

@ -849,11 +849,13 @@ class Actions extends StatefulWidget {
// This allows this function to be called by code that doesn't know the // This allows this function to be called by code that doesn't know the
// concrete type of the intent at compile time. // concrete type of the intent at compile time.
final Type type = intent?.runtimeType ?? T; final Type type = intent?.runtimeType ?? T;
assert(type != Intent, assert(
'The type passed to "find" resolved to "Intent": either a non-Intent' type != Intent,
'generic type argument or an example intent derived from Intent must be' 'The type passed to "find" resolved to "Intent": either a non-Intent '
'specified. Intent may be used as the generic type as long as the optional' 'generic type argument or an example intent derived from Intent must be '
'"intent" argument is passed.'); 'specified. Intent may be used as the generic type as long as the optional '
'"intent" argument is passed.'
);
_visitActionsAncestors(context, (InheritedElement element) { _visitActionsAncestors(context, (InheritedElement element) {
final _ActionsMarker actions = element.widget as _ActionsMarker; final _ActionsMarker actions = element.widget as _ActionsMarker;

View File

@ -794,7 +794,7 @@ void main() {
for (final TextDirection textDirection in textDirectionOptions) { for (final TextDirection textDirection in textDirectionOptions) {
for (final Widget? icon in iconOptions) { for (final Widget? icon in iconOptions) {
final String testName = 'ElevatedButton' final String testName = 'ElevatedButton'
', text scale $textScaleFactor' ', text scale $textScaleFactor' // ignore: missing_whitespace_between_adjacent_strings, https://github.com/dart-lang/linter/issues/2489
'${icon != null ? ", with icon" : ""}' '${icon != null ? ", with icon" : ""}'
'${textDirection == TextDirection.rtl ? ", RTL" : ""}'; '${textDirection == TextDirection.rtl ? ", RTL" : ""}';

View File

@ -1039,7 +1039,7 @@ void main() {
for (final TextDirection textDirection in textDirectionOptions) { for (final TextDirection textDirection in textDirectionOptions) {
for (final Widget? icon in iconOptions) { for (final Widget? icon in iconOptions) {
final String testName = 'OutlinedButton' final String testName = 'OutlinedButton'
', text scale $textScaleFactor' ', text scale $textScaleFactor' // ignore: missing_whitespace_between_adjacent_strings, https://github.com/dart-lang/linter/issues/2489
'${icon != null ? ", with icon" : ""}' '${icon != null ? ", with icon" : ""}'
'${textDirection == TextDirection.rtl ? ", RTL" : ""}'; '${textDirection == TextDirection.rtl ? ", RTL" : ""}';

View File

@ -1981,8 +1981,7 @@ void main() {
); );
testWidgets( testWidgets(
'${SnackBarBehavior.floating} should align SnackBar with the top of FloatingActionButton' '${SnackBarBehavior.floating} should align SnackBar with the top of FloatingActionButton when Scaffold has a FloatingActionButton',
'when Scaffold has a FloatingActionButton',
(WidgetTester tester) async { (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
home: Scaffold( home: Scaffold(

View File

@ -832,7 +832,7 @@ void main() {
for (final TextDirection textDirection in textDirectionOptions) { for (final TextDirection textDirection in textDirectionOptions) {
for (final Widget? icon in iconOptions) { for (final Widget? icon in iconOptions) {
final String testName = 'TextButton' final String testName = 'TextButton'
', text scale $textScaleFactor' ', text scale $textScaleFactor' // ignore: missing_whitespace_between_adjacent_strings, https://github.com/dart-lang/linter/issues/2489
'${icon != null ? ", with icon" : ""}' '${icon != null ? ", with icon" : ""}'
'${textDirection == TextDirection.rtl ? ", RTL" : ""}'; '${textDirection == TextDirection.rtl ? ", RTL" : ""}';

View File

@ -43,8 +43,7 @@ void main() {
}); });
test( test(
'AutofillClients send the correct configuration to the platform' 'AutofillClients send the correct configuration to the platform and responds to updateEditingStateWithTag method correctly',
'and responds to updateEditingStateWithTag method correctly',
() async { () async {
final FakeAutofillClient client1 = FakeAutofillClient(const TextEditingValue(text: 'test1')); final FakeAutofillClient client1 = FakeAutofillClient(const TextEditingValue(text: 'test1'));
final FakeAutofillClient client2 = FakeAutofillClient(const TextEditingValue(text: 'test2')); final FakeAutofillClient client2 = FakeAutofillClient(const TextEditingValue(text: 'test2'));

View File

@ -1806,8 +1806,7 @@ void main() {
}); });
testWidgets( testWidgets(
'iOS autocorrection rectangle should appear on demand' 'iOS autocorrection rectangle should appear on demand and dismiss when the text changes or when focus is lost',
'and dismiss when the text changes or when focus is lost',
(WidgetTester tester) async { (WidgetTester tester) async {
const Color rectColor = Color(0xFFFF0000); const Color rectColor = Color(0xFFFF0000);

View File

@ -1836,7 +1836,7 @@ class ArtifactUpdater {
if (retries == 0) { if (retries == 0) {
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.' 'flutter.dev/setup.\nThe original exception was: $err.'
); );
} }

View File

@ -448,8 +448,8 @@ abstract class FlutterCommand extends Command<void> {
argParser.addFlag('publish-port', argParser.addFlag('publish-port',
negatable: true, negatable: true,
hide: !verboseHelp, hide: !verboseHelp,
help: 'Publish the VM service port over mDNS. Disable to prevent the' help: 'Publish the VM service port over mDNS. Disable to prevent the '
'local network permission app dialog in debug and profile build modes (iOS devices only.)', 'local network permission app dialog in debug and profile build modes (iOS devices only.)',
defaultsTo: enabledByDefault); defaultsTo: enabledByDefault);
} }
@ -670,7 +670,7 @@ abstract class FlutterCommand extends Command<void> {
); );
argParser.addMultiOption(useLegacyNames ? kExtraGenSnapshotOptions : FlutterOptions.kExtraGenSnapshotOptions, argParser.addMultiOption(useLegacyNames ? kExtraGenSnapshotOptions : FlutterOptions.kExtraGenSnapshotOptions,
help: 'A comma-separated list of additional command line arguments that will be passed directly to the Dart native compiler. ' help: 'A comma-separated list of additional command line arguments that will be passed directly to the Dart native compiler. '
'(Only used in "--profile" or "--release" builds.)' '(Only used in "--profile" or "--release" builds.) '
'For example, "--${FlutterOptions.kExtraGenSnapshotOptions}=--no-strip".', 'For example, "--${FlutterOptions.kExtraGenSnapshotOptions}=--no-strip".',
valueHelp: '--foo,--bar', valueHelp: '--foo,--bar',
splitCommas: true, splitCommas: true,

View File

@ -572,6 +572,7 @@ void main() {
outputStdout().join('\n'), outputStdout().join('\n'),
"Knock Knock, Who's There " // initial message "Knock Knock, Who's There " // initial message
' ' // placeholder so that spinner can backspace on its first tick ' ' // placeholder so that spinner can backspace on its first tick
// ignore: missing_whitespace_between_adjacent_strings
'\b\b\b\b\b\b\b\b $a' // first tick '\b\b\b\b\b\b\b\b $a' // first tick
'\b\b\b\b\b\b\b\b ' // clearing the spinner '\b\b\b\b\b\b\b\b ' // clearing the spinner
'\b\b\b\b\b\b\b\b' // clearing the clearing of the spinner '\b\b\b\b\b\b\b\b' // clearing the clearing of the spinner
@ -580,6 +581,7 @@ void main() {
'Rude Interrupting Cow\n' // message 'Rude Interrupting Cow\n' // message
"Knock Knock, Who's There " // message restoration "Knock Knock, Who's There " // message restoration
' ' // placeholder so that spinner can backspace on its second tick ' ' // placeholder so that spinner can backspace on its second tick
// ignore: missing_whitespace_between_adjacent_strings
'\b\b\b\b\b\b\b\b $b' // second tick '\b\b\b\b\b\b\b\b $b' // second tick
'\b\b\b\b\b\b\b\b ' // clearing the spinner to put the time '\b\b\b\b\b\b\b\b ' // clearing the spinner to put the time
'\b\b\b\b\b\b\b\b' // clearing the clearing of the spinner '\b\b\b\b\b\b\b\b' // clearing the clearing of the spinner

View File

@ -118,19 +118,19 @@ void main() {
testWithoutContext('String', () { testWithoutContext('String', () {
expect( expect(
GitHubTemplateCreator.sanitizedCrashException( GitHubTemplateCreator.sanitizedCrashException(
'May have non-tool-internal info, very long string, 0b8abb4724aa590dd0f429683339b' 'May have non-tool-internal info, very long string, 0b8abb4724aa590dd0f429683339b' // ignore: missing_whitespace_between_adjacent_strings
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
'24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb' '24aa590dd0f429683339b1e045a1594d0b8abb4724aa590dd0f429683339b1e045a1594d0b8abb'
), ),
'String: <1,016 characters>', 'String: <1,016 characters>',
); );

View File

@ -40,8 +40,8 @@ void main() {
group('syslog stream', () { group('syslog stream', () {
testWithoutContext('decodeSyslog decodes a syslog-encoded line', () { testWithoutContext('decodeSyslog decodes a syslog-encoded line', () {
final String decoded = decodeSyslog( final String decoded = decodeSyslog(
r'I \M-b\M^]\M-$\M-o\M-8\M^O syslog \M-B\M-/\' r'I \M-b\M^]\M-$\M-o\M-8\M^O syslog '
r'134_(\M-c\M^C\M^D)_/\M-B\M-/ \M-l\M^F\240!'); r'\M-B\M-/\134_(\M-c\M^C\M^D)_/\M-B\M-/ \M-l\M^F\240!');
expect(decoded, r'I ❤️ syslog ¯\_(ツ)_/¯ 솠!'); expect(decoded, r'I ❤️ syslog ¯\_(ツ)_/¯ 솠!');
}); });

View File

@ -82,8 +82,7 @@ void main() {
); );
}); });
testWithoutContext('Picks up changes to the .packages file and updates package_config.json' testWithoutContext('Picks up changes to the .packages file and updates package_config.json, asyncScanning: $asyncScanning', () async {
', asyncScanning: $asyncScanning', () async {
final DateTime past = DateTime.now().subtract(const Duration(seconds: 1)); final DateTime past = DateTime.now().subtract(const Duration(seconds: 1));
final FileSystem fileSystem = MemoryFileSystem.test(); final FileSystem fileSystem = MemoryFileSystem.test();
const PackageConfig packageConfig = PackageConfig.empty; const PackageConfig packageConfig = PackageConfig.empty;
@ -124,9 +123,7 @@ void main() {
])); ]));
}); });
testWithoutContext('Picks up changes to the .packages file and updates PackageConfig, asyncScanning: $asyncScanning', () async {
testWithoutContext('Picks up changes to the .packages file and updates PackageConfig'
', asyncScanning: $asyncScanning', () async {
final FileSystem fileSystem = MemoryFileSystem.test(); final FileSystem fileSystem = MemoryFileSystem.test();
const PackageConfig packageConfig = PackageConfig.empty; const PackageConfig packageConfig = PackageConfig.empty;
final ProjectFileInvalidator projectFileInvalidator = ProjectFileInvalidator( final ProjectFileInvalidator projectFileInvalidator = ProjectFileInvalidator(