Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VSCode + Flutter + Dart => Rename Symbol is really slow and sometimes not even working #2231

Closed
mikeesouth opened this issue Jan 24, 2020 · 45 comments
Labels
in editor Relates to code editing or language features in lsp/analysis server Something to be fixed in the Dart analysis server is bug

Comments

@mikeesouth
Copy link

Rename symbol (shortcut key F2) in my flutter projects is really slow. Not sure if flutter is relevant of if this is a general dart problem. I think it is a dart problem so I'm posting here. When I have syntax/build errors I find it common that rename never finishes, the "infinite progress" in VS Code just keeps spinning what seems to be forever.

If I create a brand new (flutter) project: flutter create slow_refactor and then open the project, let everything initialize, pub get packages and let that complete as well. After this I go to main.dart, rename title to myTitle. This takes ... 10? 15? seconds to complete. If I rename it to myTitle2 it takes a split second.

Can I mitigate this issue somehow? It's really tedious to rename symbols and most often I just hit replace all feature instead because I'm convinced that the rename won't work. Rename is such a common (simple) refactor that I expect it to work at all times.

I can't find any known issues regarding this but I know that other members in my team have the same issue.

I'm running Windows 10, stable VS Code, flutter 1.13 and 1.14 (beta and master), dart 2.8.0-dev.3.0. My computer specs are category "great" so this is not due to slow cpu, disk or memory issues.

@jifalops
Copy link

This has been happening for me for some time. Once in a while the refactor goes off into lala land. You can actually do another refactor while it is thinking and it should do the second refactor only. That's if you know it's hung up and not because it's a complex refactor in a huge project.

@DanTup
Copy link
Member

DanTup commented Jan 24, 2020

I'm struggling to repro this. The first refactor is a little slower (but only maybe 1-2 seconds) and from the logs looks like it was because the analyzer will still busy doing startup stuff (pre-loading code completions).

Is anyone able to capture a log of it being really slow?

  • Run Dart: Capture Logs command, tick only Analyzer
  • Reproduce slow refactor
  • Reproduce fast refactor
  • Click Cancel on logging dialog and provide the log

Note: The log my contain contents from your files, so please do this on a trivial project.

@DanTup DanTup added this to the v3.9.0 milestone Jan 24, 2020
@DanTup DanTup added the awaiting info Requires more information from the customer to progress label Jan 24, 2020
@mikeesouth
Copy link
Author

Sorry for the (very) late response here. I find it to work better now but not great. I can repro this easily but the delay is more like 10 seconds now and it seems to work in most cases now. I haven't been able to repro that it fails completely. So I reproed like this:
I opened my project and let VS Code "initialize" for around 30 seconds. Then I opened a file (AppButton) and I started capture logs (anayzer only) and then I pressed F2 on the class name and renamed it to "MyButton". It spans over 15 dart files. That rename took 10 seconds. The log is too big to post here so I've created a gist.

@DanTup
Copy link
Member

DanTup commented Feb 13, 2020

Thanks for the log! The relevant parts are here:

[15:55:48] [Analyzer] [Info] ==> {"id":"34","method":"edit.getRefactoring","params":{"file":"C:\\git\\my-project\\lib\\widgets\\app_button\\app_button.dart","kind":"RENAME","length":1,"offset":143,"options":{"newName":"MyButton"},"validateOnly":false},"clientRequestTime":1581432948177}
[15:55:53] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1805,"uri":"package:file/record_replay.dart","items":[{"label":"InvocationException","declaringLibraryUri":"package:file/src/backends/record_replay/errors.dart","element":{"kind":"CLASS","name":"InvocationException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\record_replay\\errors.dart","offset":1663,"length":0,"startLine":49,"startColumn":7},"flags":0},"relevanceTags":["package:file/src/backends/record_replay/errors.dart::InvocationException","InvocationException"]},{"label":"InvocationException","declaringLibraryUri":"package:file/src/backends/record_replay/errors.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\record_replay\\errors.dart","offset":4294967295,"length":0,"startLine":0,"startColumn":0},"flags":0,"parameters":"()","returnType":"InvocationException"},"parameterNames":[],"parameterTypes":[],"relevanceTags":["package:file/src/backends/record_replay/errors.dart::InvocationException",""],"requiredParameterCount":0},{"label":"InvocationEvent","declaringLibraryUri":"package:file/src/backends/record_replay/events.dart","element":{"kind":"CLASS","name":"InvocationEvent","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\record_replay\\events.dart","offset":485,"length":0,"startLine":15,"startColumn":16},"flags":1},"relevanceTags":["package:file/src/backends/record_replay/events.dart::InvocationEvent","InvocationEvent"]},{"label":"object","declaringLibraryUri":"package:file/src/backends/record_replay/events.dart","element":{"kind":"GETTER","name":"object","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\record_replay\\events.dart","offset":595,"length":0,"startLine":17,"startColumn":14},"f…
[15:55:53] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1811,"uri":"package:file/chroot.dart","items":[{"label":"ChrootFileSystem","declaringLibraryUri":"package:file/src/backends/chroot.dart","element":{"kind":"CLASS","name":"ChrootFileSystem","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\chroot\\chroot_file_system.dart","offset":1573,"length":0,"startLine":37,"startColumn":7},"flags":0},"relevanceTags":["package:file/src/backends/chroot.dart::ChrootFileSystem","ChrootFileSystem"]},{"label":"ChrootFileSystem","declaringLibraryUri":"package:file/src/backends/chroot.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\chroot\\chroot_file_system.dart","offset":1777,"length":0,"startLine":41,"startColumn":3},"flags":0,"parameters":"(this.delegate, this.root)","returnType":"ChrootFileSystem"},"defaultArgumentListString":"delegate, root","defaultArgumentListTextRanges":[0,8,10,4],"parameterNames":["delegate","root"],"parameterTypes":["",""],"relevanceTags":["package:file/src/backends/chroot.dart::ChrootFileSystem",""],"requiredParameterCount":2},{"label":"delegate","declaringLibraryUri":"package:file/src/backends/chroot.dart","element":{"kind":"FIELD","name":"delegate","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\chroot\\chroot_file_system.dart","offset":2030,"length":0,"startLine":49,"startColumn":20},"flags":4,"returnType":"FileSystem"}},{"label":"root","declaringLibraryUri":"package:file/src/backends/chroot.dart","element":{"kind":"FIELD","name":"root","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file-5.1.0\\lib\\src\\backends\\chroot\\chroot_file_system.dart","offset":2132,"length":0,"startLine":52,"startColumn":16},"flags":4,"returnType":"String"}},{"label":"directory","declari…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1818,"uri":"package:vm_service/vm_service.dart","items":[{"label":"StepOption","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"CLASS","name":"StepOption","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset":76983,"length":0,"startLine":2249,"startColumn":7},"flags":0},"relevanceTags":["package:vm_service/src/vm_service.dart::StepOption","StepOption"]},{"label":"kInto","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"FIELD","name":"kInto","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset":77037,"length":0,"startLine":2252,"startColumn":23},"flags":2,"returnType":"String"},"relevanceTags":["dart:core::String","kInto"]},{"label":"kOver","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"FIELD","name":"kOver","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset":77075,"length":0,"startLine":2253,"startColumn":23},"flags":2,"returnType":"String"},"relevanceTags":["dart:core::String","kOver"]},{"label":"kOverAsyncSuspension","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"FIELD","name":"kOverAsyncSuspension","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset":77113,"length":0,"startLine":2254,"startColumn":23},"flags":2,"returnType":"String"},"relevanceTags":["dart:core::String","kOverAsyncSuspension"]},{"label":"kOut","declaringLibraryUri":"package:vm_service/src/vm_service.dart","element":{"kind":"FIELD","name":"kOut","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\src\\vm_service.dart","offset"…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1823,"uri":"package:source_maps/builder.dart","items":[{"label":"Entry","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"CLASS","name":"Entry","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2208,"length":0,"startLine":62,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/builder.dart::Entry","Entry"]},{"label":"source","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"FIELD","name":"source","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2335,"length":0,"startLine":64,"startColumn":24},"flags":4,"returnType":"SourceLocation"}},{"label":"target","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"FIELD","name":"target","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2436,"length":0,"startLine":67,"startColumn":24},"flags":4,"returnType":"SourceLocation"}},{"label":"identifierName","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"FIELD","name":"identifierName","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2536,"length":0,"startLine":70,"startColumn":16},"flags":4,"returnType":"String"}},{"label":"Entry","declaringLibraryUri":"package:source_maps/builder.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\builder.dart","offset":2613,"length":0,"startLine":73,"startColumn":3},"flags":0,"parameters":"(this.source, this.target, this.identifierName)","returnType":"Entry"},"defaultArgumentListString":"source, target, identifierName","defaultArgumentListTextRanges":[0,6,…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1824,"uri":"package:source_maps/parser.dart","items":[{"label":"TargetEntry","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"CLASS","name":"TargetEntry","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21718,"length":0,"startLine":610,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/parser.dart::TargetEntry","TargetEntry"]},{"label":"column","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"column","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21744,"length":0,"startLine":611,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceUrlId","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceUrlId","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21764,"length":0,"startLine":612,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceLine","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceLine","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21789,"length":0,"startLine":613,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceColumn","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceColumn","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21813,"length":0,"startLine":614,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceNameId","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceNameId","location":{"file":"C…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1825,"uri":"package:coverage/coverage.dart","items":[{"label":"StdoutLog","declaringLibraryUri":"package:coverage/src/collect.dart","element":{"kind":"CLASS","name":"StdoutLog","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\coverage-0.13.4\\lib\\src\\collect.dart","offset":7915,"length":0,"startLine":225,"startColumn":7},"flags":0},"relevanceTags":["package:coverage/src/collect.dart::StdoutLog","StdoutLog"]},{"label":"warning","declaringLibraryUri":"package:coverage/src/collect.dart","element":{"kind":"METHOD","name":"warning","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\coverage-0.13.4\\lib\\src\\collect.dart","offset":7958,"length":0,"startLine":227,"startColumn":8},"flags":0,"parameters":"(String message)","returnType":"void"},"defaultArgumentListString":"message","defaultArgumentListTextRanges":[0,7],"parameterNames":["message"],"parameterTypes":["String"],"requiredParameterCount":1},{"label":"severe","declaringLibraryUri":"package:coverage/src/collect.dart","element":{"kind":"METHOD","name":"severe","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\coverage-0.13.4\\lib\\src\\collect.dart","offset":8020,"length":0,"startLine":229,"startColumn":8},"flags":0,"parameters":"(String message)","returnType":"void"},"defaultArgumentListString":"message","defaultArgumentListTextRanges":[0,7],"parameterNames":["message"],"parameterTypes":["String"],"requiredParameterCount":1},{"label":"StdoutLog","declaringLibraryUri":"package:coverage/src/collect.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\coverage-0.13.4\\lib\\src\\collect.dart","offset":4294967295,"length":0,"startLine":0,"startColumn":0},"flags":0,"parameters":"()","returnType":"StdoutLog"},"parameterNames":[],"parameterTypes":[],"relevanceTags":["package:coverage/s…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1832,"uri":"package:collection/wrappers.dart","items":[{"label":"DelegatingSet","declaringLibraryUri":"package:collection/src/wrappers.dart","element":{"kind":"CLASS","name":"DelegatingSet","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\wrappers.dart","offset":7485,"length":0,"startLine":253,"startColumn":7},"flags":0},"relevanceTags":["package:collection/src/wrappers.dart::DelegatingSet","DelegatingSet"]},{"label":"DelegatingSet","declaringLibraryUri":"package:collection/src/wrappers.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\wrappers.dart","offset":7560,"length":0,"startLine":254,"startColumn":9},"flags":0,"parameters":"(Set<E> base)","returnType":"DelegatingSet"},"defaultArgumentListString":"base","defaultArgumentListTextRanges":[0,4],"parameterNames":["base"],"parameterTypes":["Set<E>"],"relevanceTags":["package:collection/src/wrappers.dart::DelegatingSet",""],"requiredParameterCount":1},{"label":"typed","declaringLibraryUri":"package:collection/src/wrappers.dart","element":{"kind":"METHOD","name":"typed","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\wrappers.dart","offset":8229,"length":0,"startLine":268,"startColumn":17},"flags":32,"parameters":"(Set base)","returnType":"Set<E>","typeParameters":"<E>"},"defaultArgumentListString":"base","defaultArgumentListTextRanges":[0,4],"parameterNames":["base"],"parameterTypes":["Set"],"requiredParameterCount":1},{"label":"add","declaringLibraryUri":"package:collection/src/wrappers.dart","element":{"kind":"METHOD","name":"add","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\wrappers.dart","offset":8308,"length":0,"startLine":272,"startColumn":8},"fla…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1833,"uri":"package:collection/priority_queue.dart","items":[{"label":"HeapPriorityQueue","declaringLibraryUri":"package:collection/src/priority_queue.dart","element":{"kind":"CLASS","name":"HeapPriorityQueue","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\priority_queue.dart","offset":4201,"length":0,"startLine":119,"startColumn":7},"flags":0},"relevanceTags":["package:collection/src/priority_queue.dart::HeapPriorityQueue","HeapPriorityQueue"]},{"label":"comparison","declaringLibraryUri":"package:collection/src/priority_queue.dart","element":{"kind":"FIELD","name":"comparison","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\priority_queue.dart","offset":4632,"length":0,"startLine":128,"startColumn":23},"flags":4,"returnType":"Comparator<E>"}},{"label":"HeapPriorityQueue","declaringLibraryUri":"package:collection/src/priority_queue.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\priority_queue.dart","offset":5280,"length":0,"startLine":147,"startColumn":3},"flags":0,"parameters":"([int comparison(E e1, E e2)])","returnType":"HeapPriorityQueue"},"parameterNames":["comparison"],"parameterTypes":[""],"relevanceTags":["package:collection/src/priority_queue.dart::HeapPriorityQueue",""],"requiredParameterCount":0},{"label":"add","declaringLibraryUri":"package:collection/src/priority_queue.dart","element":{"kind":"METHOD","name":"add","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\priority_queue.dart","offset":5392,"length":0,"startLine":150,"startColumn":8},"flags":0,"parameters":"(E element)","returnType":"void"},"defaultArgumentListString":"element","defaultArgumentListTextRanges":[0,7],"parameterNames":…
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1834,"uri":"package:collection/iterable_zip.dart","items":[{"label":"IterableZip","declaringLibraryUri":"package:collection/src/iterable_zip.dart","element":{"kind":"CLASS","name":"IterableZip","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\iterable_zip.dart","offset":703,"length":0,"startLine":16,"startColumn":7},"flags":0},"relevanceTags":["package:collection/src/iterable_zip.dart::IterableZip","IterableZip"]},{"label":"IterableZip","declaringLibraryUri":"package:collection/src/iterable_zip.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\iterable_zip.dart","offset":795,"length":0,"startLine":19,"startColumn":3},"flags":0,"parameters":"(Iterable<Iterable<T>> iterables)","returnType":"IterableZip"},"defaultArgumentListString":"iterables","defaultArgumentListTextRanges":[0,9],"parameterNames":["iterables"],"parameterTypes":["Iterable<Iterable<T>>"],"relevanceTags":["package:collection/src/iterable_zip.dart::IterableZip",""],"requiredParameterCount":1},{"label":"iterator","declaringLibraryUri":"package:collection/src/iterable_zip.dart","element":{"kind":"GETTER","name":"iterator","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\iterable_zip.dart","offset":1010,"length":0,"startLine":23,"startColumn":25},"flags":0,"returnType":"Iterator<List<T>>"}}]}],"removedLibraries":[]}}
[15:55:54] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1835,"uri":"package:collection/equality.dart","items":[{"label":"CaseInsensitiveEquality","declaringLibraryUri":"package:collection/src/equality.dart","element":{"kind":"CLASS","name":"CaseInsensitiveEquality","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\equality.dart","offset":15045,"length":0,"startLine":455,"startColumn":7},"flags":0},"relevanceTags":["package:collection/src/equality.dart::CaseInsensitiveEquality","CaseInsensitiveEquality"]},{"label":"CaseInsensitiveEquality","declaringLibraryUri":"package:collection/src/equality.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\equality.dart","offset":15107,"length":0,"startLine":456,"startColumn":9},"flags":0,"parameters":"()","returnType":"CaseInsensitiveEquality"},"parameterNames":[],"parameterTypes":[],"relevanceTags":["package:collection/src/equality.dart::CaseInsensitiveEquality",""],"requiredParameterCount":0},{"label":"equals","declaringLibraryUri":"package:collection/src/equality.dart","element":{"kind":"METHOD","name":"equals","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\equality.dart","offset":15142,"length":0,"startLine":458,"startColumn":8},"flags":0,"parameters":"(String string1, String string2)","returnType":"bool"},"defaultArgumentListString":"string1, string2","defaultArgumentListTextRanges":[0,7,9,7],"parameterNames":["string1","string2"],"parameterTypes":["String","String"],"requiredParameterCount":2},{"label":"hash","declaringLibraryUri":"package:collection/src/equality.dart","element":{"kind":"METHOD","name":"hash","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\collection-1.14.11\\lib\\src\\equality.dart","offset":15238,"length":0,"startLine":461,"star…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1836,"uri":"package:webdriver/support/stdio_stepper.dart","items":[{"label":"LineReader","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"CLASS","name":"LineReader","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2644,"length":0,"startLine":86,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/support/stdio_stepper.dart::LineReader","LineReader"]},{"label":"CR","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"FIELD","name":"CR","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2672,"length":0,"startLine":87,"startColumn":16},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","CR"]},{"label":"LF","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"FIELD","name":"LF","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2696,"length":0,"startLine":88,"startColumn":16},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","LF"]},{"label":"encoding","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"FIELD","name":"encoding","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2838,"length":0,"startLine":94,"startColumn":18},"flags":4,"returnType":"Encoding"}},{"label":"LineReader","declaringLibraryUri":"package:webdriver/support/stdio_stepper.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\stdio_stepper.dart","offset":2965,"length":0,"startLine":98,"startColumn":3…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1837,"uri":"package:webdriver/support/forwarder.dart","items":[{"label":"WebDriverForwarder","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"CLASS","name":"WebDriverForwarder","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":2758,"length":0,"startLine":57,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/support/forwarder.dart::WebDriverForwarder","WebDriverForwarder"]},{"label":"driver","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"FIELD","name":"driver","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":2848,"length":0,"startLine":59,"startColumn":19},"flags":4,"returnType":"WebDriver"}},{"label":"prefix","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"FIELD","name":"prefix","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":2930,"length":0,"startLine":62,"startColumn":17},"flags":4,"returnType":"Pattern"}},{"label":"outputDir","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"FIELD","name":"outputDir","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":3013,"length":0,"startLine":65,"startColumn":19},"flags":4,"returnType":"Directory"}},{"label":"useDeep","declaringLibraryUri":"package:webdriver/support/forwarder.dart","element":{"kind":"FIELD","name":"useDeep","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\forwarder.dart","offset":3102,"length":0,"startLine":68,"startColumn":8},"flags":0,"returnType":"bool"}},{"label":"WebDriverForwarder"…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1838,"uri":"package:webdriver/support/firefox_profile.dart","items":[{"label":"defaultUserPrefs","declaringLibraryUri":"package:webdriver/support/firefox_profile.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"defaultUserPrefs","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\firefox_profile.dart","offset":4119,"length":0,"startLine":83,"startColumn":25},"flags":4,"returnType":"List<PrefsOption>"},"relevanceTags":["dart:core::List","defaultUserPrefs"]},{"label":"BooleanOption","declaringLibraryUri":"package:webdriver/support/firefox_profile.dart","element":{"kind":"CLASS","name":"BooleanOption","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\firefox_profile.dart","offset":13613,"length":0,"startLine":343,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/support/firefox_profile.dart::BooleanOption","BooleanOption"]},{"label":"BooleanOption","declaringLibraryUri":"package:webdriver/support/firefox_profile.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\firefox_profile.dart","offset":13657,"length":0,"startLine":344,"startColumn":3},"flags":0,"parameters":"(String name, bool value)","returnType":"BooleanOption"},"defaultArgumentListString":"name, value","defaultArgumentListTextRanges":[0,4,6,5],"parameterNames":["name","value"],"parameterTypes":["String","bool"],"relevanceTags":["package:webdriver/support/firefox_profile.dart::BooleanOption",""],"requiredParameterCount":2},{"label":"IntegerOption","declaringLibraryUri":"package:webdriver/support/firefox_profile.dart","element":{"kind":"CLASS","name":"IntegerOption","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\support\\firefox_profile.dart"…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1839,"uri":"package:webdriver/io.dart","items":[{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CLASS","name":"UnknownException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1278,"length":0,"startLine":43,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException","UnknownException"]},{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1332,"length":0,"startLine":44,"startColumn":9},"flags":0,"parameters":"(int statusCode, String message)","returnType":"UnknownException"},"defaultArgumentListString":"statusCode, message","defaultArgumentListTextRanges":[0,10,12,7],"parameterNames":["statusCode","message"],"parameterTypes":["int","String"],"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException",""],"requiredParameterCount":2},{"label":"MouseButton","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"CLASS","name":"MouseButton","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":259,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/mouse.dart::MouseButton","MouseButton"]},{"label":"primary","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"FIELD","name":"primary","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":467,"length":0,"startLine":10,"startColumn":28},"fl…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1842,"uri":"package:webdriver/core.dart","items":[{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CLASS","name":"UnknownException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1278,"length":0,"startLine":43,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException","UnknownException"]},{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1332,"length":0,"startLine":44,"startColumn":9},"flags":0,"parameters":"(int statusCode, String message)","returnType":"UnknownException"},"defaultArgumentListString":"statusCode, message","defaultArgumentListTextRanges":[0,10,12,7],"parameterNames":["statusCode","message"],"parameterTypes":["int","String"],"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException",""],"requiredParameterCount":2},{"label":"MouseButton","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"CLASS","name":"MouseButton","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":259,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/mouse.dart::MouseButton","MouseButton"]},{"label":"primary","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"FIELD","name":"primary","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":467,"length":0,"startLine":10,"startColumn":28},"…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1840,"uri":"package:webdriver/async_io.dart","items":[{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CLASS","name":"UnknownException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1278,"length":0,"startLine":43,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException","UnknownException"]},{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1332,"length":0,"startLine":44,"startColumn":9},"flags":0,"parameters":"(int statusCode, String message)","returnType":"UnknownException"},"defaultArgumentListString":"statusCode, message","defaultArgumentListTextRanges":[0,10,12,7],"parameterNames":["statusCode","message"],"parameterTypes":["int","String"],"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException",""],"requiredParameterCount":2},{"label":"MouseButton","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"CLASS","name":"MouseButton","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":259,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/mouse.dart::MouseButton","MouseButton"]},{"label":"primary","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"FIELD","name":"primary","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":467,"length":0,"startLine":10,"startColumn":2…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1843,"uri":"package:webdriver/async_html.dart","items":[{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CLASS","name":"UnknownException","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1278,"length":0,"startLine":43,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException","UnknownException"]},{"label":"UnknownException","declaringLibraryUri":"package:webdriver/src/common/exception.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\exception.dart","offset":1332,"length":0,"startLine":44,"startColumn":9},"flags":0,"parameters":"(int statusCode, String message)","returnType":"UnknownException"},"defaultArgumentListString":"statusCode, message","defaultArgumentListTextRanges":[0,10,12,7],"parameterNames":["statusCode","message"],"parameterTypes":["int","String"],"relevanceTags":["package:webdriver/src/common/exception.dart::UnknownException",""],"requiredParameterCount":2},{"label":"MouseButton","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"CLASS","name":"MouseButton","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":259,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:webdriver/src/common/mouse.dart::MouseButton","MouseButton"]},{"label":"primary","declaringLibraryUri":"package:webdriver/src/common/mouse.dart","element":{"kind":"FIELD","name":"primary","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\webdriver-2.1.1\\lib\\src\\common\\mouse.dart","offset":467,"length":0,"startLine":10,"startColumn"…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1845,"uri":"package:web_socket_channel/status.dart","items":[{"label":"tlsHandshakeFailed","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"tlsHandshakeFailed","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\status.dart","offset":3301,"length":0,"startLine":90,"startColumn":7},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","tlsHandshakeFailed"]},{"label":"protocolError","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"protocolError","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\status.dart","offset":1009,"length":0,"startLine":31,"startColumn":7},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","protocolError"]},{"label":"internalServerError","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"internalServerError","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\status.dart","offset":3059,"length":0,"startLine":83,"startColumn":7},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","internalServerError"]},{"label":"messageTooBig","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"messageTooBig","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\status.dart","offset":2442,"length":0,"startLine":70,"startColumn":7},"flags":2,"returnType":""},"relevanceTags":["dart:core::int","messageTooBig"]},{"label":"goingAway","declaringLibraryUri":"package:web_socket_channel/status.dart","element":{"kind":"TOP_LEVEL_VARIABLE","name":"goingAway","location":{"file":"C:\\flutter\\.pub-cach…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1846,"uri":"package:web_socket_channel/html.dart","items":[{"label":"HtmlWebSocketChannel","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"CLASS","name":"HtmlWebSocketChannel","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":547,"length":0,"startLine":18,"startColumn":7},"flags":0},"relevanceTags":["package:web_socket_channel/html.dart::HtmlWebSocketChannel","HtmlWebSocketChannel"]},{"label":"protocol","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"GETTER","name":"protocol","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":719,"length":0,"startLine":23,"startColumn":14},"flags":0,"returnType":"String"}},{"label":"closeCode","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"GETTER","name":"closeCode","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":763,"length":0,"startLine":25,"startColumn":11},"flags":0,"returnType":"int"}},{"label":"closeReason","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"GETTER","name":"closeReason","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":820,"length":0,"startLine":28,"startColumn":14},"flags":0,"returnType":"String"}},{"label":"bufferedAmount","declaringLibraryUri":"package:web_socket_channel/html.dart","element":{"kind":"GETTER","name":"bufferedAmount","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\web_socket_channel-1.1.0\\lib\\html.dart","offset":985,"length":0,"startLine":33,"startColumn":11},"flags":0,"returnType":"int"}},{"label":"stream","declaringLibraryUri":"package:web_sock…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1847,"uri":"package:vm_service/utils.dart","items":[{"label":"convertToWebSocketUrl","declaringLibraryUri":"package:vm_service/utils.dart","element":{"kind":"FUNCTION","name":"convertToWebSocketUrl","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\utils.dart","offset":401,"length":0,"startLine":10,"startColumn":5},"flags":0,"parameters":"({@required Uri serviceProtocolUrl})","returnType":"Uri"},"defaultArgumentListString":"serviceProtocolUrl: null","defaultArgumentListTextRanges":[20,4],"parameterNames":["serviceProtocolUrl"],"parameterTypes":["Uri"],"requiredParameterCount":0}]}],"removedLibraries":[]}}
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1848,"uri":"package:test_core/backend.dart","items":[{"label":"parseMetadata","declaringLibraryUri":"package:test_core/src/runner/parse_metadata.dart","element":{"kind":"FUNCTION","name":"parseMetadata","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\test_core-0.2.15\\lib\\src\\runner\\parse_metadata.dart","offset":1185,"length":0,"startLine":25,"startColumn":10},"flags":0,"parameters":"(String path, String contents, Set<String> platformVariables)","returnType":"Metadata"},"defaultArgumentListString":"path, contents, platformVariables","defaultArgumentListTextRanges":[0,4,6,8,16,17],"parameterNames":["path","contents","platformVariables"],"parameterTypes":["String","String","Set<String>"],"requiredParameterCount":3},{"label":"Runtime","declaringLibraryUri":"package:test_api/src/backend/runtime.dart","element":{"kind":"CLASS","name":"Runtime","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\test_api-0.2.11\\lib\\src\\backend\\runtime.dart","offset":286,"length":0,"startLine":6,"startColumn":7},"flags":0},"relevanceTags":["package:test_api/src/backend/runtime.dart::Runtime","Runtime"]},{"label":"vm","declaringLibraryUri":"package:test_api/src/backend/runtime.dart","element":{"kind":"FIELD","name":"vm","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\test_api-0.2.11\\lib\\src\\backend\\runtime.dart","offset":495,"length":0,"startLine":11,"startColumn":24},"flags":2,"returnType":"Runtime"}},{"label":"chrome","declaringLibraryUri":"package:test_api/src/backend/runtime.dart","element":{"kind":"FIELD","name":"chrome","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\test_api-0.2.11\\lib\\src\\backend\\runtime.dart","offset":582,"length":0,"startLine":14,"startColumn":24},"flags":2,"returnType":"Runtime"}},{"label":"phantomJS","declaringLibraryUri":"package:test_api/src/backend/…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1850,"uri":"package:vm_service/vm_service_io.dart","items":[{"label":"vmServiceConnectUri","declaringLibraryUri":"package:vm_service/vm_service_io.dart","element":{"kind":"FUNCTION","name":"vmServiceConnectUri","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\vm_service_io.dart","offset":1010,"length":0,"startLine":31,"startColumn":19},"flags":0,"parameters":"(String wsUri, {Log log})","returnType":"Future<VmService>"},"defaultArgumentListString":"wsUri","defaultArgumentListTextRanges":[0,5],"parameterNames":["wsUri","log"],"parameterTypes":["String","Log"],"requiredParameterCount":1},{"label":"vmServiceConnect","declaringLibraryUri":"package:vm_service/vm_service_io.dart","element":{"kind":"FUNCTION","name":"vmServiceConnect","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\vm_service-2.3.1\\lib\\vm_service_io.dart","offset":344,"length":0,"startLine":11,"startColumn":19},"flags":32,"parameters":"(String host, int port, {Log log})","returnType":"Future<VmService>"},"defaultArgumentListString":"host, port","defaultArgumentListTextRanges":[0,4,6,4],"parameterNames":["host","port","log"],"parameterTypes":["String","int","Log"],"requiredParameterCount":2}]}],"removedLibraries":[]}}
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1851,"uri":"package:stream_channel/isolate_channel.dart","items":[{"label":"IsolateChannel","declaringLibraryUri":"package:stream_channel/src/isolate_channel.dart","element":{"kind":"CLASS","name":"IsolateChannel","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\stream_channel-2.0.0\\lib\\src\\isolate_channel.dart","offset":1133,"length":0,"startLine":26,"startColumn":7},"flags":0},"relevanceTags":["package:stream_channel/src/isolate_channel.dart::IsolateChannel","IsolateChannel"]},{"label":"stream","declaringLibraryUri":"package:stream_channel/src/isolate_channel.dart","element":{"kind":"FIELD","name":"stream","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\stream_channel-2.0.0\\lib\\src\\isolate_channel.dart","offset":1213,"length":0,"startLine":28,"startColumn":19},"flags":4,"returnType":"Stream<T>"}},{"label":"sink","declaringLibraryUri":"package:stream_channel/src/isolate_channel.dart","element":{"kind":"FIELD","name":"sink","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\stream_channel-2.0.0\\lib\\src\\isolate_channel.dart","offset":1255,"length":0,"startLine":30,"startColumn":23},"flags":4,"returnType":"StreamSink<T>"}},{"label":"IsolateChannel.connectReceive","declaringLibraryUri":"package:stream_channel/src/isolate_channel.dart","element":{"kind":"CONSTRUCTOR","name":"connectReceive","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\stream_channel-2.0.0\\lib\\src\\isolate_channel.dart","offset":1814,"length":0,"startLine":43,"startColumn":26},"flags":0,"parameters":"(ReceivePort receivePort)","returnType":"IsolateChannel"},"defaultArgumentListString":"receivePort","defaultArgumentListTextRanges":[0,11],"parameterNames":["receivePort"],"parameterTypes":["ReceivePort"],"relevanceTags":["package:stream_channel/src/isolate_channel.dart::IsolateChannel","connectRece…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1853,"uri":"package:source_maps/refactor.dart","items":[{"label":"guessIndent","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"FUNCTION","name":"guessIndent","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\refactor.dart","offset":3655,"length":0,"startLine":108,"startColumn":8},"flags":0,"parameters":"(String code, int charOffset)","returnType":"String"},"defaultArgumentListString":"code, charOffset","defaultArgumentListTextRanges":[0,4,6,10],"parameterNames":["code","charOffset"],"parameterTypes":["String","int"],"requiredParameterCount":2},{"label":"TextEditTransaction","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"CLASS","name":"TextEditTransaction","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\refactor.dart","offset":713,"length":0,"startLine":19,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/refactor.dart::TextEditTransaction","TextEditTransaction"]},{"label":"file","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"FIELD","name":"file","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\refactor.dart","offset":754,"length":0,"startLine":20,"startColumn":20},"flags":4,"returnType":"SourceFile"}},{"label":"original","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"FIELD","name":"original","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\refactor.dart","offset":775,"length":0,"startLine":21,"startColumn":16},"flags":4,"returnType":"String"}},{"label":"TextEditTransaction","declaringLibraryUri":"package:source_maps/refactor.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartl…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1854,"uri":"package:source_maps/printer.dart","items":[{"label":"Printer","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"CLASS","name":"Printer","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":576,"length":0,"startLine":18,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/printer.dart::Printer","Printer"]},{"label":"filename","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"FIELD","name":"filename","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":601,"length":0,"startLine":19,"startColumn":16},"flags":4,"returnType":"String"}},{"label":"text","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"GETTER","name":"text","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":730,"length":0,"startLine":22,"startColumn":14},"flags":0,"returnType":"String"}},{"label":"map","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"GETTER","name":"map","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":769,"length":0,"startLine":23,"startColumn":14},"flags":0,"returnType":"String"}},{"label":"Printer","declaringLibraryUri":"package:source_maps/printer.dart","element":{"kind":"CONSTRUCTOR","name":"","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\printer.dart","offset":974,"length":0,"startLine":34,"startColumn":3},"flags":0,"parameters":"(this.filename)","returnType":"Printer"},"defaultArgumentListString":"filename","defaultArgumentListTextRanges":[0,8],"parameterNames":["filename"],"parameterTypes":[""],"relevanceTags":["package:sour…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1855,"uri":"package:source_maps/source_maps.dart","items":[{"label":"TargetEntry","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"CLASS","name":"TargetEntry","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21718,"length":0,"startLine":610,"startColumn":7},"flags":0},"relevanceTags":["package:source_maps/parser.dart::TargetEntry","TargetEntry"]},{"label":"column","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"column","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21744,"length":0,"startLine":611,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceUrlId","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceUrlId","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21764,"length":0,"startLine":612,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceLine","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceLine","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21789,"length":0,"startLine":613,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceColumn","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceColumn","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_maps-0.10.8\\lib\\parser.dart","offset":21813,"length":0,"startLine":614,"startColumn":13},"flags":4,"returnType":"int"}},{"label":"sourceNameId","declaringLibraryUri":"package:source_maps/parser.dart","element":{"kind":"FIELD","name":"sourceNameId","location":{"fil…
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1857,"uri":"package:source_map_stack_trace/source_map_stack_trace.dart","items":[{"label":"mapStackTrace","declaringLibraryUri":"package:source_map_stack_trace/source_map_stack_trace.dart","element":{"kind":"FUNCTION","name":"mapStackTrace","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_map_stack_trace-1.1.5\\lib\\source_map_stack_trace.dart","offset":1182,"length":0,"startLine":25,"startColumn":12},"flags":0,"parameters":"(Mapping sourceMap, StackTrace stackTrace, {bool minified: false, SyncPackageResolver packageResolver, sdkRoot, @Deprecated(\"Use the packageResolver parameter instead.\") packageRoot})","returnType":"StackTrace"},"defaultArgumentListString":"sourceMap, stackTrace","defaultArgumentListTextRanges":[0,9,11,10],"parameterNames":["sourceMap","stackTrace","minified","packageResolver","sdkRoot","packageRoot"],"parameterTypes":["Mapping","StackTrace","bool","SyncPackageResolver","",""],"requiredParameterCount":2}]}],"removedLibraries":[]}}
[15:55:55] [Analyzer] [Info] <== {"event":"completion.availableSuggestions","params":{"changedLibraries":[{"id":1858,"uri":"package:source_gen/builder.dart","items":[{"label":"combiningBuilder","declaringLibraryUri":"package:source_gen/builder.dart","element":{"kind":"FUNCTION","name":"combiningBuilder","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_gen-0.9.4+7\\lib\\builder.dart","offset":903,"length":0,"startLine":26,"startColumn":9},"flags":0,"parameters":"([BuilderOptions options])","returnType":"Builder"},"parameterNames":["options"],"parameterTypes":["BuilderOptions"],"requiredParameterCount":0},{"label":"partCleanup","declaringLibraryUri":"package:source_gen/builder.dart","element":{"kind":"FUNCTION","name":"partCleanup","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_gen-0.9.4+7\\lib\\builder.dart","offset":1380,"length":0,"startLine":42,"startColumn":20},"flags":0,"parameters":"(BuilderOptions options)","returnType":"PostProcessBuilder"},"defaultArgumentListString":"options","defaultArgumentListTextRanges":[0,7],"parameterNames":["options"],"parameterTypes":["BuilderOptions"],"requiredParameterCount":1},{"label":"CombiningBuilder","declaringLibraryUri":"package:source_gen/builder.dart","element":{"kind":"CLASS","name":"CombiningBuilder","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_gen-0.9.4+7\\lib\\builder.dart","offset":1606,"length":0,"startLine":48,"startColumn":7},"flags":0},"relevanceTags":["package:source_gen/builder.dart::CombiningBuilder","CombiningBuilder"]},{"label":"buildExtensions","declaringLibraryUri":"package:source_gen/builder.dart","element":{"kind":"GETTER","name":"buildExtensions","location":{"file":"C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\source_gen-0.9.4+7\\lib\\builder.dart","offset":1720,"length":0,"startLine":52,"startColumn":33},"flags":0,"returnType":"Map<String, List<String>>"}},{"label":"CombiningBuilder","declaringLibraryUri":…
[15:55:55] [Analyzer] [Info] <== {"id":"34","result":{"initialProblems":[],"optionsProblems":[],"finalProblems":[],"feedback":{"offset":139,"length":9,"elementKindName":"class","oldName":"AppButton"},"change":{"message":"Rename Class 'AppButton' to 'MyButton'","edits":[{"file":"C:\\git\\my-project\\lib\\widgets\\app_button\\app_button.dart","fileStamp":0,"edits":[{"offset":1537,"length":9,"replacement":"MyButton"},{"offset":1507,"length":15,"replacement":"_MyButtonState"},{"offset":1476,"length":15,"replacement":"_MyButtonState"},{"offset":1443,"length":15,"replacement":"_MyButtonState"},{"offset":787,"length":9,"replacement":"MyButton"},{"offset":139,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\lib\\screens\\letter_practice\\letter_practice.dart","fileStamp":0,"edits":[{"offset":6024,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\lib\\widgets\\keyboard\\keyboard_button_builder.dart","fileStamp":0,"edits":[{"offset":357,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\lib\\screens\\profile_chooser\\widgets\\profile_edit_form.dart","fileStamp":0,"edits":[{"offset":4645,"length":9,"replacement":"MyButton"},{"offset":3882,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\test\\widget_tests\\widgets\\app_button\\app_button_test.dart","fileStamp":0,"edits":[{"offset":3000,"length":9,"replacement":"MyButton"},{"offset":2625,"length":9,"replacement":"MyButton"},{"offset":2197,"length":9,"replacement":"MyButton"},{"offset":2014,"length":9,"replacement":"MyButton"},{"offset":1825,"length":9,"replacement":"MyButton"},{"offset":1525,"length":9,"replacement":"MyButton"},{"offset":814,"length":9,"replacement":"MyButton"},{"offset":463,"length":9,"replacement":"MyButton"},{"offset":439,"length":9,"replacement":"MyButton"}]},{"file":"C:\\git\\my-project\\lib\\screens\\listen_and_find\\listen_and_find.dart","fileStamp":0,"edits":[{"offset":14016,"length":9,"replacemen…

It shows around 7 seconds for the rename, but there are lots of completion.availableSuggestions messages in between. This makes me think the server was still doing things in the background when this happened.

If you leave it longer (maybe a couple of minutes?) before doing the first rename, do you still see it? (I'm not sure if it's just startup work, or if the rename is somehow triggering that work on the server).

@mikeesouth
Copy link
Author

I've been examining this for the last couple of weeks and it seems like it's some kind of "startup" work (just as you've stated above). After the first rename, the following renames are more or less instant. However, this startup does not trigger for me until the first rename. I can open my project, work for 30 minutes, build, debug, open/close files, create classes, hot reloads etc - then I rename a symbol and it takes a long time (7 seconds in the above case). So this "startup" work isn't triggered until the first rename.

Our project is currently 95 dart files (300k in total size). An interesting observation is that even if I've been running the project for say 30 or 60 minutes and then I rename a class or a field - it will take at least the above 7 seconds. But sometimes it takes more (e.g. 20 secs) and sometimes (quite often) it does not complete at all. I guess it's a timeout after 30 seconds or so? If a rename times out the loading spinner in VS Code stops moving and no error message or other info is displayed (and the symbol isn't renamed). If I try to rename the same thing (or something else) after this, it renames immediately.
We are currently three people working on this project, we all have the same issue. Currently we're using the beta branch (1.14.6) but we've had this problem for quite some time. I would say around version 1 and including current master (1.15).

Another observation is that "References: Find all references" (Shift + Alt + F12) has the same issue. Finding references for a symbol can take really long time and it often times out. I guess this triggers the same kind of "indexing" job that rename uses.

A workaround that is working for me is to trigger "Find all references" with my morning cup of coffee and keep VS Code open during the day.

I'd like to repro this with a open source project so I can provide easy steps to reproduce and no problems sharing the logs (considering that the logs may contain info about our project). I don't have time to do that right now but hopefully in a couple of weeks or so.

Sorry for late responses in for this issue!

@DanTup
Copy link
Member

DanTup commented Feb 29, 2020

@mikeesouth thanks for the extra details!

An interesting observation is that even if I've been running the project for say 30 or 60 minutes and then I rename a class or a field - it will take at least the above 7 seconds.

I thought I saw that too - but since I wasn't waiting very long, I thought I might have just been too fast while it was still working. Since this seems to confirm it is happening, I'll capture a log with a longer wait and move this over to the SDK repo.

@DanTup
Copy link
Member

DanTup commented May 13, 2020

I tried to repro this again recently, and I came across a performance issue - but it was only triggered in very specific circumstances (where you open VS Code with files already open, and then don't open/close any additional files). I've fixed that in the SDK, but I'm not sure it's the cause of this.

For those that can reliably reproduce this, some things that may help:

  • A shareable public project this can be reproduced in, so I can use exactly the same code
  • Testing whether disabling dart.autoImportCompletions changes this behaviour (if it still happens with this disabled, a server instrumentation log taken while reproducing may be useful - though note that it may include parts of your source code)

@DanTup DanTup modified the milestones: v3.11.0, On Deck May 13, 2020
@nilsreichardt
Copy link
Contributor

Same issue :( Very frustrating to wait 15 seconds for renaming a variable.

@DanTup
Copy link
Member

DanTup commented Jun 1, 2020

Please see the request in the comment above. If someone can share a project this happens with, along with an instrumentation log (and confirm whether dart.autoImportCompletions affects it), I'd like to dig into what's going on.

@github-actions
Copy link

github-actions bot commented Jul 2, 2020

This issue has been marked stale because it is tagged awaiting-info for 30 days with no activity. Remove the stale label or comment to prevent the issue being closed in 10 days.

@github-actions github-actions bot added the stale Will be closed soon if no response. label Jul 2, 2020
@DanTup DanTup modified the milestones: On Deck, Backlog Jul 2, 2020
@DanTup DanTup reopened this Jul 13, 2020
@DanTup DanTup added in editor Relates to code editing or language features and removed awaiting info Requires more information from the customer to progress stale Will be closed soon if no response. labels Jul 13, 2020
@esDotDev
Copy link

esDotDev commented Oct 9, 2020

I get this about 4 or 5 times a day, a lot of the times it will be something where there are literally like 3 instances to rename in the same file, and it just fires off the loading indicator, and nothing happens. Other times it's super robust.

Will try and find any rhyme or reason to it.

@DanTup DanTup modified the milestones: v3.16.0, v3.17.0 Oct 26, 2020
@DanTup DanTup added the in lsp/analysis server Something to be fixed in the Dart analysis server label Nov 2, 2020
@DanTup DanTup modified the milestones: v3.17.0, On Deck Nov 18, 2020
@Reprevise
Copy link

Reprevise commented Feb 8, 2021

I'm on previewLsp and I still have the same issue.

Logs

SLOW

!! PLEASE REVIEW THIS LOG FOR SENSITIVE INFORMATION BEFORE SHARING !!

Dart Code extension: 3.19.2
Flutter extension: 3.19.0 (activated)

App: Visual Studio Code
Version: 1.53.0
Platform: win

Workspace type: Flutter
Analyzer type: LSP
Multi-root?: false

Dart SDK:
    Loc: C:\Users\thesl\fvm\versions\stable\bin\cache\dart-sdk
    Ver: 2.10.5
Flutter SDK:
    Loc: C:\Users\thesl\fvm\versions\stable
    Ver: 1.22.6

HTTP_PROXY: undefined
NO_PROXY: 127.0.0.1

Logging Categories:
    General, Analyzer, CommandProcesses

Mon Feb 08 2021 [09:04:32 GMT-0500 (Eastern Standard Time)] Log file started
[9:04:34 AM] [Analyzer] [Info] ==> Content-Length: 236
[9:04:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":548,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":18}}}
[9:04:34 AM] [Analyzer] [Info] <== Content-Length: 313
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:34 AM] [Analyzer] [Info] <== {"id":548,"jsonrpc":"2.0","result":{"contents":{"kind":"markdown","value":"```dart\nclass SpecialsViewModle extends StreamViewModel<QuerySnapshot>\n```\n*package:townofmadawaska/ui/views/chamber_module/widgets/specials_viewmodel.dart*"},"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}}}}
[9:04:34 AM] [Analyzer] [Info] ==> Content-Length: 248
[9:04:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":549,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":19}}}
[9:04:34 AM] [Analyzer] [Info] <== Content-Length: 114
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:34 AM] [Analyzer] [Info] <== {"id":549,"jsonrpc":"2.0","result":[{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}}}]}
[9:04:34 AM] [Analyzer] [Info] ==> Content-Length: 309
[9:04:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":550,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"range":{"start":{"line":3,"character":19},"end":{"line":3,"character":19}},"context":{"diagnostics":[]}}}
[9:04:34 AM] [Analyzer] [Info] <== Content-Length: 967
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:34 AM] [Analyzer] [Info] <== {"id":550,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Convert class to a mixin","kind":"refactor.convert.classToMixin","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":137,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":63}},"newText":"mixin SpecialsViewModle implements StreamViewModel<QuerySnapshot> "}]}]}}]}
[9:04:34 AM] [Analyzer] [Info] ==> Content-Length: 244
[9:04:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":551,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":19}}}
[9:04:34 AM] [Analyzer] [Info] <== Content-Length: 146
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:34 AM] [Analyzer] [Info] <== {"id":551,"jsonrpc":"2.0","result":{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"placeholder":"SpecialsViewModle"}}
[9:04:36 AM] [Analyzer] [Info] ==> Content-Length: 267
[9:04:36 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":552,"method":"textDocument/rename","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":19},"newName":"SpecialsViewModel"}}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 695
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"id":552,"jsonrpc":"2.0","result":{"documentChanges":[{"textDocument":{"version":137,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"newText":"SpecialsViewModel"}]},{"textDocument":{"version":215,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart"},"edits":[{"range":{"start":{"line":15,"character":32},"end":{"line":15,"character":49}},"newText":"SpecialsViewModel"},{"range":{"start":{"line":14,"character":28},"end":{"line":14,"character":45}},"newText":"SpecialsViewModel"}]}]}}
[9:04:53 AM] [Analyzer] [Info] ==> Content-Length: 470
[9:04:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","version":216},"contentChanges":[{"range":{"start":{"line":15,"character":32},"end":{"line":15,"character":49}},"rangeLength":17,"text":"SpecialsViewModel"},{"range":{"start":{"line":14,"character":28},"end":{"line":14,"character":45}},"rangeLength":17,"text":"SpecialsViewModel"}]}}
[9:04:53 AM] [Analyzer] [Info] ==> Content-Length: 436
[9:04:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","version":138},"contentChanges":[{"range":{"start":{"line":3,"character":22},"end":{"line":3,"character":23}},"rangeLength":1,"text":""},{"range":{"start":{"line":3,"character":21},"end":{"line":3,"character":21}},"rangeLength":0,"text":"e"}]}}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 75
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"method":"$/analyzerStatus","params":{"isAnalyzing":true},"jsonrpc":"2.0"}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 196
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 1024
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","labels":[{"range":{"start":{"line":14,"character":11},"end":{"line":63,"character":10}},"label":"ViewModelBuilder.reactive"},{"range":{"start":{"line":17,"character":17},"end":{"line":62,"character":11}},"label":"Scaffold"},{"range":{"start":{"line":18,"character":34},"end":{"line":27,"character":13}},"label":"SpeedDial"},{"range":{"start":{"line":21,"character":16},"end":{"line":25,"character":17}},"label":"SpeedDialChild"},{"range":{"start":{"line":28,"character":18},"end":{"line":61,"character":13}},"label":"StreamBuilder"},{"range":{"start":{"line":37,"character":25},"end":{"line":39,"character":19}},"label":"Center"},{"range":{"start":{"line":42,"character":25},"end":{"line":44,"character":19}},"label":"Center"},{"range":{"start":{"line":51,"character":23},"end":{"line":59,"character":17}},"label":"ListView.separated"}]},"jsonrpc":"2.0"}Content-Length: 5530
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"children":[{"element":{"range":{"start":{"line":9,"character":6},"end":{"lin…
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 196
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 2160
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","labels":[{"range":{"start":{"line":17,"character":11},"end":{"line":100,"character":5}},"label":"Container"},{"range":{"start":{"line":20,"character":13},"end":{"line":99,"character":7}},"label":"Column"},{"range":{"start":{"line":22,"character":10},"end":{"line":38,"character":11}},"label":"Row"},{"range":{"start":{"line":25,"character":14},"end":{"line":30,"character":15}},"label":"Text"},{"range":{"start":{"line":27,"character":23},"end":{"line":29,"character":17}},"label":"TextStyle"},{"range":{"start":{"line":31,"character":14},"end":{"line":36,"character":15}},"label":"Text"},{"range":{"start":{"line":33,"character":23},"end":{"line":35,"character":17}},"label":"TextStyle"},{"range":{"start":{"line":39,"character":10},"end":{"line":47,"character":11}},"label":"Container"},{"range":{"start":{"line":40,"character":19},"end":{"line":46,"character":13}},"label":"Text"},{"range":{"start":{"line":42,"character":21},"end":{"line":45,"character":15}},"label":"TextStyle"},{"range":{"start":{"line":48,"character":10},"end":{"line":75,"character":11}},"label":"RichText"},{"range":{"start":{"line":49,"character":18},"end":{"line":74,"character":13}},"label":"TextSpan"},{"range":{"start":{"line":51,"character":16},"end":{"line":61,"character":17}},"label":"TextSpan"},{"range":{"start":{"line":55,"character":25},"end":{"line":60,"character":19}},"label":"TextStyle"},{"range":{"start":{"line":63,"character":16},"end":{"line":72,"character":17}},"label":"TextSpan"},{"range":{"start":{"line":67,"character":25},"end":{"line":71,"character":19}},"label":"TextStyle"},{"range":{"start":{"line":76,"character":10},"end":{"line":82,"character":11}},"label":"Row"},{"range":{"start":{"line":83,"character":10},"end":{"line":92,"characte…
[9:04:53 AM] [Analyzer] [Info] <== {"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":103,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":103,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":103,"character":0}},"children":[{"element":{"range":{"start":{"line":8,"character":6},"end":{"line":8,"character":18}},"name":"SpecialsCard","kind":"CLASS"},"range":{"start":{"line":8,"character":0},"end":{"line":102,"character":1}},"codeRange":{"start":{"line":8,"character":0},"end":{"line":102,"character":1}},"children":[{"element":{"range":{"start":{"line":9,"character":16},"end":{"line":9,"character":23}},"name":"special","kind":"FIELD","returnType":"Special"},"range":{"start":{"line":9,"character":2},"end":{"line":9,"character":24}},"codeRange":{"start":{"line":9,"character":16},"end":{"line":9,"character":23}}},{"element":{"range":{"start":{"line":11,"character":8},"end":{"line":11,"character":14}},"name":"format","kind":"FIELD","returnType":""},"range":{"start":{"line":11,"character":2},"end":{"line":11,"character":44}},"codeRange":{"start":{"line":11,"character":8},"end":{"line":11,"character":43}}},{"element":{"range":{"start":{"line":13,"character":2},"end":{"line":13,"character":14}},"name":"SpecialsCard","kind":"CONSTRUCTOR","parameters":"({Key key, @required this.special})"},"range":{"start":{"line":13,"character":2},"end":{"line":13,"character":68}},"codeRange":{"start":{"line":13,"character":2},"end":{"line":13,"character":68}}},{"element":{"range":{"start":{"line":16,"character":9},"end":{"line":16,"character":14}},"name":"build","kind":"METHOD","parameters":"(BuildContext context)","returnType":"Widget"},"range":{"start":{"line":15,"character":2},"end":{"line":101,"character":3}},"codeRange":{"start":{"line":16,"c…
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 201
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 203
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","labels":[]},"jsonrpc":"2.0"}Content-Length: 1102
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"children":[{"element":{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"name":"SpecialsViewModel","kind":"CLASS"},"range":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"codeRange":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"children":[{"element":{"range":{"start":{"line":5,"character":28},"end":{"line":5,"character":34}},"name":"stream","kind":"GETTER","returnType":"Stream<QuerySnapshot>"},"range":{"start":{"line":4,"character":2},"end":{"line":8,"character":19}},"codeRange":{"start":{"line":5,"character":2},"end":{"line":8,"character":19}}}]}]}},"jsonrpc":"2.0"}Content-Length: 1187
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishFlutterOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","outline":{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"codeRange":{"start":{"line":0,"c…
[9:04:53 AM] [Analyzer] [Info] ==> Content-Length: 206
[9:04:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":553,"method":"textDocument/foldingRange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"}}}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 184
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":553,"jsonrpc":"2.0","result":[{"startLine":3,"startCharacter":64,"endLine":9,"endCharacter":0},{"startLine":0,"startCharacter":6,"endLine":1,"endCharacter":38,"kind":"imports"}]}
[9:04:53 AM] [Analyzer] [Info] ==> Content-Length: 208
[9:04:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":554,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"}}}
[9:04:53 AM] [Analyzer] [Info] <== Content-Length: 471
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:04:53 AM] [Analyzer] [Info] <== {"id":554,"jsonrpc":"2.0","result":[{"name":"SpecialsViewModel","kind":5,"deprecated":false,"range":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"selectionRange":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"children":[{"name":"stream","kind":7,"deprecated":false,"range":{"start":{"line":5,"character":2},"end":{"line":8,"character":19}},"selectionRange":{"start":{"line":5,"character":28},"end":{"line":5,"character":34}}}]}]}
Mon Feb 08 2021 [09:04:57 GMT-0500 (Eastern Standard Time)] Log file ended

FAST

!! PLEASE REVIEW THIS LOG FOR SENSITIVE INFORMATION BEFORE SHARING !!

Dart Code extension: 3.19.2
Flutter extension: 3.19.0 (activated)

App: Visual Studio Code
Version: 1.53.0
Platform: win

Workspace type: Flutter
Analyzer type: LSP
Multi-root?: false

Dart SDK:
    Loc: C:\Users\thesl\fvm\versions\stable\bin\cache\dart-sdk
    Ver: 2.10.5
Flutter SDK:
    Loc: C:\Users\thesl\fvm\versions\stable
    Ver: 1.22.6

HTTP_PROXY: undefined
NO_PROXY: 127.0.0.1

Logging Categories:
    General, Analyzer, CommandProcesses

Mon Feb 08 2021 [09:10:36 GMT-0500 (Eastern Standard Time)] Log file started
[9:10:37 AM] [Analyzer] [Info] ==> Content-Length: 236
[9:10:37 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":619,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":20}}}
[9:10:37 AM] [Analyzer] [Info] <== Content-Length: 313
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:37 AM] [Analyzer] [Info] <== {"id":619,"jsonrpc":"2.0","result":{"contents":{"kind":"markdown","value":"```dart\nclass SpecialsViewModle extends StreamViewModel<QuerySnapshot>\n```\n*package:townofmadawaska/ui/views/chamber_module/widgets/specials_viewmodel.dart*"},"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}}}}
[9:10:37 AM] [Analyzer] [Info] ==> Content-Length: 248
[9:10:37 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":620,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":21}}}
[9:10:37 AM] [Analyzer] [Info] <== Content-Length: 114
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:37 AM] [Analyzer] [Info] <== {"id":620,"jsonrpc":"2.0","result":[{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}}}]}
[9:10:38 AM] [Analyzer] [Info] ==> Content-Length: 309
[9:10:38 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":621,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"range":{"start":{"line":3,"character":21},"end":{"line":3,"character":21}},"context":{"diagnostics":[]}}}
[9:10:38 AM] [Analyzer] [Info] <== Content-Length: 967
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:38 AM] [Analyzer] [Info] <== {"id":621,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Convert class to a mixin","kind":"refactor.convert.classToMixin","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":146,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":63}},"newText":"mixin SpecialsViewModle implements StreamViewModel<QuerySnapshot> "}]}]}}]}
[9:10:38 AM] [Analyzer] [Info] ==> Content-Length: 244
[9:10:38 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":622,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":21}}}
[9:10:38 AM] [Analyzer] [Info] <== Content-Length: 146
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:38 AM] [Analyzer] [Info] <== {"id":622,"jsonrpc":"2.0","result":{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"placeholder":"SpecialsViewModle"}}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 267
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":623,"method":"textDocument/rename","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"position":{"line":3,"character":21},"newName":"SpecialsViewModel"}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 695
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"id":623,"jsonrpc":"2.0","result":{"documentChanges":[{"textDocument":{"version":146,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"newText":"SpecialsViewModel"}]},{"textDocument":{"version":228,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart"},"edits":[{"range":{"start":{"line":15,"character":32},"end":{"line":15,"character":49}},"newText":"SpecialsViewModel"},{"range":{"start":{"line":14,"character":28},"end":{"line":14,"character":45}},"newText":"SpecialsViewModel"}]}]}}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 470
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","version":229},"contentChanges":[{"range":{"start":{"line":15,"character":32},"end":{"line":15,"character":49}},"rangeLength":17,"text":"SpecialsViewModel"},{"range":{"start":{"line":14,"character":28},"end":{"line":14,"character":45}},"rangeLength":17,"text":"SpecialsViewModel"}]}}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 436
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","version":147},"contentChanges":[{"range":{"start":{"line":3,"character":22},"end":{"line":3,"character":23}},"rangeLength":1,"text":""},{"range":{"start":{"line":3,"character":21},"end":{"line":3,"character":21}},"rangeLength":0,"text":"e"}]}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 75
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"$/analyzerStatus","params":{"isAnalyzing":true},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 196
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 1024
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","labels":[{"range":{"start":{"line":14,"character":11},"end":{"line":63,"character":10}},"label":"ViewModelBuilder.reactive"},{"range":{"start":{"line":17,"character":17},"end":{"line":62,"character":11}},"label":"Scaffold"},{"range":{"start":{"line":18,"character":34},"end":{"line":27,"character":13}},"label":"SpeedDial"},{"range":{"start":{"line":21,"character":16},"end":{"line":25,"character":17}},"label":"SpeedDialChild"},{"range":{"start":{"line":28,"character":18},"end":{"line":61,"character":13}},"label":"StreamBuilder"},{"range":{"start":{"line":37,"character":25},"end":{"line":39,"character":19}},"label":"Center"},{"range":{"start":{"line":42,"character":25},"end":{"line":44,"character":19}},"label":"Center"},{"range":{"start":{"line":51,"character":23},"end":{"line":59,"character":17}},"label":"ListView.separated"}]},"jsonrpc":"2.0"}Content-Length: 5530
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_view.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":66,"character":0}},"children":[{"element":{"range":{"start":{"line":9,"character":6},"end":{"line":9,"character":18}},"name":"SpecialsView","kind":"CLASS"},"range":{"start":{"line":9,"character":0},"end":{"line":65,"character":1}},"codeRange":{"start":{"line":9,"character":0},"end":{"line":65,"character":1}},"children":[{"element":{"range":{"start":{"line":10,"character…
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 196
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 2160
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_card.dart","labels":[{"range":{"start":{"line":17,"character":11},"end":{"line":100,"character":5}},"label":"Container"},{"range":{"start":{"line":20,"character":13},"end":{"line":99,"character":7}},"label":"Column"},{"range":{"start":{"line":22,"character":10},"end":{"line":38,"character":11}},"label":"Row"},{"range":{"start":{"line":25,"character":14},"end":{"line":30,"character":15}},"label":"Text"},{"range":{"start":{"line":27,"character":23},"end":{"line":29,"character":17}},"label":"TextStyle"},{"range":{"start":{"line":31,"character":14},"end":{"line":36,"character":15}},"label":"Text"},{"range":{"start":{"line":33,"character":23},"end":{"line":35,"character":17}},"label":"TextStyle"},{"range":{"start":{"line":39,"character":10},"end":{"line":47,"character":11}},"label":"Container"},{"range":{"start":{"line":40,"character":19},"end":{"line":46,"character":13}},"label":"Text"},{"range":{"start":{"line":42,"character":21},"end":{"line":45,"character":15}},"label":"TextStyle"},{"range":{"start":{"line":48,"character":10},"end":{"line":75,"character":11}},"label":"RichText"},{"range":{"start":{"line":49,"character":18},"end":{"line":74,"character":13}},"label":"TextSpan"},{"range":{"start":{"line":51,"character":16},"end":{"line":61,"character":17}},"label":"TextSpan"},{"range":{"start":{"line":55,"character":25},"end":{"line":60,"character":19}},"label":"TextStyle"},{"range":{"start":{"line":63,"character":16},"end":{"line":72,"character":17}},"label":"TextSpan"},{"range":{"start":{"line":67,"character":25},"end":{"line":71,"character":19}},"label":"TextStyle"},{"range":{"start":{"line":76,"character":10},"end":{"line":82,"character":11}},"label":"Row"},{"range":{"start":{"line":83,"character":10},"end":{"line":92,"characte…
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 201
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 203
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","labels":[]},"jsonrpc":"2.0"}Content-Length: 1102
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":10,"character":0}},"children":[{"element":{"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"name":"SpecialsViewModel","kind":"CLASS"},"range":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"codeRange":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"children":[{"element":{"range":{"start":{"line":5,"character":28},"end":{"line":5,"character":34}},"name":"stream","kind":"GETTER","returnType":"Stream<QuerySnapshot>"},"range":{"start":{"line":4,"character":2},"end":{"line":8,"character":19}},"codeRange":{"start":{"line":5,"character":2},"end":{"line":8,"character":19}}}]}]}},"jsonrpc":"2.0"}Content-Length: 1187
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishFlutterOutline","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel…
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 174
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/config/kid_program.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 169
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/router/router.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 172
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/router/router.gr.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 175
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/utils/notifications.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 182
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/core/viewmodels/posts_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 212
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/confirmation_screen.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 214
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/create_edit_kids_page.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 212
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/create_edit_program.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 388
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/kid_detail_screen.dart","diagnostics":[{"range":{"start":{"line":50,"character":7},"end":{"line":50,"character":25}},"severity":3,"code":"prefer_final_fields","source":"dart","message":"Private field could be final."}]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 386
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/program_details.dart","diagnostics":[{"range":{"start":{"line":43,"character":7},"end":{"line":43,"character":25}},"severity":3,"code":"prefer_final_fields","source":"dart","message":"Private field could be final."}]},"jsonrpc":"2.0"}Content-Length: 210
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/program_kids_page.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 214
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/program_kid_list_page.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 208
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/page/recreation_page.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 205
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/features/recreation_module/presenter/widgets/news_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 177
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/injection_container.config.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 170
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/injection_container.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 155
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/main.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 172
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/services/auth_service.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 174
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/setup_dialog_service.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 176
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/setup_snackbar_service.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 189
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/business_apply.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 199
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/business_apply_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 188
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/business_edit.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 198
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/business_edit_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 194
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/chamber_module_view.dart","diagnostics":[]},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 198
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/businesses_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 203
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/businesses_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 193
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/posts_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 198
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/create_edit_post/create_edit_post_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 203
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/create_edit_post/create_edit_post_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 174
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/home/home_view.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 179
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/home/home_viewmodel.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 179
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/home/widgets/drawer.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 174
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/l…
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 175
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/views/welcome/welcome.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 171
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/dev/town-of-madawaska/flutter_app/lib/ui/widgets/post_card.dart","diagnostics":[]},"jsonrpc":"2.0"}Content-Length: 76
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"$/analyzerStatus","params":{"isAnalyzing":false},"jsonrpc":"2.0"}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 206
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":624,"method":"textDocument/foldingRange","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"}}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 184
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"id":624,"jsonrpc":"2.0","result":[{"startLine":3,"startCharacter":64,"endLine":9,"endCharacter":0},{"startLine":0,"startCharacter":6,"endLine":1,"endCharacter":38,"kind":"imports"}]}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 309
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":625,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"range":{"start":{"line":3,"character":22},"end":{"line":3,"character":22}},"context":{"diagnostics":[]}}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 967
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"id":625,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["c:\\dev\\town-of-madawaska\\flutter_app\\lib\\ui\\views\\chamber_module\\widgets\\specials_viewmodel.dart"]}},{"title":"Convert class to a mixin","kind":"refactor.convert.classToMixin","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":147,"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"},"edits":[{"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":63}},"newText":"mixin SpecialsViewModel implements StreamViewModel<QuerySnapshot> "}]}]}}]}
[9:10:40 AM] [Analyzer] [Info] ==> Content-Length: 208
[9:10:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":626,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///c%3A/dev/town-of-madawaska/flutter_app/lib/ui/views/chamber_module/widgets/specials_viewmodel.dart"}}}
[9:10:40 AM] [Analyzer] [Info] <== Content-Length: 471
Content-Type: application/vscode-jsonrpc; charset=utf-8
[9:10:40 AM] [Analyzer] [Info] <== {"id":626,"jsonrpc":"2.0","result":[{"name":"SpecialsViewModel","kind":5,"deprecated":false,"range":{"start":{"line":3,"character":0},"end":{"line":9,"character":1}},"selectionRange":{"start":{"line":3,"character":6},"end":{"line":3,"character":23}},"children":[{"name":"stream","kind":7,"deprecated":false,"range":{"start":{"line":5,"character":2},"end":{"line":8,"character":19}},"selectionRange":{"start":{"line":5,"character":28},"end":{"line":5,"character":34}}}]}]}
Mon Feb 08 2021 [09:10:42 GMT-0500 (Eastern Standard Time)] Log file ended

@DanTup
Copy link
Member

DanTup commented Feb 8, 2021

This week I found a performance bug in the LSP server that may be related. The issue was a combination of a few things:

These things together can result in the server doing unnecessary work right when you'd want it to be doing other things (such as servicing a Ctrl+Click, or handling a file you've just opened).

The fix for that has landed in Flutter's master branch. I wonder if anyone seeing these issues on is able to test whether temporarily switching to master seems to resolve this? (note: the first analysis of a project after changing branch will be slower, as the Flutter SDKs are seen for the first time). This appears to have helped for at least one user.

@samandmoore
Copy link

samandmoore commented May 6, 2021

Do you know which version of dart and dart-code might contain improvements around this issue? I'm seeing some pretty rough slowness on flutter 2.0.4, dart 2.12.2. renaming a symbol in a small file but a large codebase (80K+ lines of dart w/o codegen'd files, with codegen'd files 290K+ lines).

Here's the analyzer logs, hopefully this helps:

I performed a Rename Symbol action, typed the name in and waited ~27 seconds for it to complete. This was on a somewhat fresh launch of the project in VS Code. I hadn't done any real editing of the project files since opening the project 5-10 minutes before running this experiment.

Note: renaming the symbol back to the original name took maybe 1 second.

[3:23:12 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":19,"method":"textDocument/rename","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":54},"newName":"fooo"}}
[3:23:39 PM] [Analyzer] [Info] <== Content-Length: 764
Content-Type: application/vscode-jsonrpc; charset=utf-8
Logs
!! PLEASE REVIEW THIS LOG FOR SENSITIVE INFORMATION BEFORE SHARING !!

Dart Code extension: 3.22.0
Flutter extension: 3.22.0 (activated)

App: Visual Studio Code
Version: 1.56.0
Platform: mac

Workspace type: Dart, Flutter
Analyzer type: LSP
Multi-root?: false

Dart SDK:
    Loc: /Users/sammoore/fvm/versions/2.0.4/bin/cache/dart-sdk
    Ver: 2.12.2
Flutter SDK:
    Loc: /Users/sammoore/fvm/versions/2.0.4
    Ver: 2.0.4

HTTP_PROXY: undefined
NO_PROXY: undefined

Logging Categories:
    General, Analyzer

Thu May 06 2021 [15:23:01 GMT-0400 (Eastern Daylight Time)] Log file started
[3:23:05 PM] [Analyzer] [Info] ==> Content-Length: 315
[3:23:05 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":13,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"range":{"start":{"line":14,"character":57},"end":{"line":14,"character":57}},"context":{"diagnostics":[]}}}
[3:23:05 PM] [Analyzer] [Info] <== Content-Length: 528
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:05 PM] [Analyzer] [Info] <== {"id":13,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}}]}
[3:23:06 PM] [Analyzer] [Info] ==> Content-Length: 315
[3:23:06 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":14,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"range":{"start":{"line":10,"character":46},"end":{"line":10,"character":46}},"context":{"diagnostics":[]}}}
[3:23:06 PM] [Analyzer] [Info] <== Content-Length: 528
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:06 PM] [Analyzer] [Info] <== {"id":14,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}}]}
[3:23:07 PM] [Analyzer] [Info] ==> Content-Length: 241
[3:23:07 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":15,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":48}}}
[3:23:07 PM] [Analyzer] [Info] <== Content-Length: 3845
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:07 PM] [Analyzer] [Info] <== {"id":15,"jsonrpc":"2.0","result":{"contents":{"kind":"markdown","value":"```dart\nabstract class BuildContext\n```\n*package:flutter/src/widgets/framework.dart*\n\n---\nA handle to the location of a widget in the widget tree.\n\nThis class presents a set of methods that can be used from\n[StatelessWidget.build] methods and from methods on [State] objects.\n\n[BuildContext] objects are passed to [WidgetBuilder] functions (such as\n[StatelessWidget.build]), and are available from the [State.context] member.\nSome static functions (e.g. [showDialog], [Theme.of], and so forth) also\ntake build contexts so that they can act on behalf of the calling widget, or\nobtain data specifically for the given context.\n\nEach widget has its own [BuildContext], which becomes the parent of the\nwidget returned by the [StatelessWidget.build] or [State.build] function.\n(And similarly, the parent of any children for [RenderObjectWidget]s.)\n\nIn particular, this means that within a build method, the build context of\nthe widget of the build method is not the same as the build context of the\nwidgets returned by that build method. This can lead to some tricky cases.\nFor example, [Theme.of(context)] looks for the nearest enclosing [Theme] of\nthe given build context. If a build method for a widget Q includes a [Theme]\nwithin its returned widget tree, and attempts to use [Theme.of] passing its\nown context, the build method for Q will not find that [Theme] object. It\nwill instead find whatever [Theme] was an ancestor to the widget Q. If the\nbuild context for a subpart of the returned tree is needed, a [Builder]\nwidget can be used: the build context passed to the [Builder.builder]\ncallback will be that of the [Builder] itself.\n\nFor example, in the following snippet, the [ScaffoldState.showBottomSheet]\nmethod is called on the [Scaffold] widget that the build method itself\ncreates. If a [Builder] had not been used, and instead the `context`\nargument of the build method itself…
[3:23:08 PM] [Analyzer] [Info] ==> Content-Length: 253
[3:23:08 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":16,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":54}}}
[3:23:08 PM] [Analyzer] [Info] <== Content-Length: 276
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:08 PM] [Analyzer] [Info] <== {"id":16,"jsonrpc":"2.0","result":[{"range":{"start":{"line":14,"character":52},"end":{"line":14,"character":56}}},{"range":{"start":{"line":15,"character":15},"end":{"line":15,"character":19}}},{"range":{"start":{"line":16,"character":69},"end":{"line":16,"character":73}}}]}
[3:23:08 PM] [Analyzer] [Info] ==> Content-Length: 315
[3:23:08 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":17,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"range":{"start":{"line":14,"character":54},"end":{"line":14,"character":54}},"context":{"diagnostics":[]}}}
[3:23:08 PM] [Analyzer] [Info] <== Content-Length: 903
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:08 PM] [Analyzer] [Info] <== {"id":17,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["/Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"]}},{"title":"Remove type annotation","kind":"refactor.remove.typeAnnotation","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"edits":[{"range":{"start":{"line":14,"character":39},"end":{"line":14,"character":52}},"newText":""}]}]}}]}
[3:23:09 PM] [Analyzer] [Info] ==> Content-Length: 249
[3:23:09 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":18,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":54}}}
[3:23:09 PM] [Analyzer] [Info] <== Content-Length: 135
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:09 PM] [Analyzer] [Info] <== {"id":18,"jsonrpc":"2.0","result":{"range":{"start":{"line":14,"character":52},"end":{"line":14,"character":56}},"placeholder":"from"}}
[3:23:12 PM] [Analyzer] [Info] ==> Content-Length: 259
[3:23:12 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":19,"method":"textDocument/rename","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":54},"newName":"fooo"}}
[3:23:39 PM] [Analyzer] [Info] <== Content-Length: 764
Content-Type: application/vscode-jsonrpc; charset=utf-8
[3:23:39 PM] [Analyzer] [Info] <== {"id":19,"jsonrpc":"2.0","result":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"edits":[{"range":{"start":{"line":16,"character":69},"end":{"line":16,"character":73}},"newText":"fooo"},{"range":{"start":{"line":15,"character":15},"end":{"line":15,"character":19}},"newText":"fooo"},{"range":{"start":{"line":14,"character":52},"end":{"line":14,"character":56}},"newText":"fooo"}]},{"textDocument":{"version":null,"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile.dart"},"edits":[{"range":{"start":{"line":16,"character":53},"end":{"line":16,"character":57}},"newText":"fooo"}]}]}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 1126
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile.dart","languageId":"dart","version":1,"text":"import 'package:betterment_flutter/core/core.dart';\nimport 'package:betterment_flutter/features/settings/personal_profile/coordinator/personal_profile_coordinator.dart';\nimport 'package:betterment_flutter/features/settings/personal_profile/personal_profile_bloc.dart';\nimport 'package:betterment_flutter/utils/utils.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\n\nclass PersonalProfile extends Feature {\n  const PersonalProfile({Key key}) : super(key: key);\n\n  @override\n  Squad get owner => Squad.experience;\n\n  @override\n  Widget buildFeature(BuildContext context) {\n    return BlocProvider(\n      create: (context) => PersonalProfileBloc.build(from: context),\n      child: CoordinatorNavigator(\n        builder: (navigatorGetter) => PersonalProfileCoordinator(navigatorGetter: navigatorGetter),\n      ),\n    );\n  }\n}\n"}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 872
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart","version":2},"contentChanges":[{"range":{"start":{"line":16,"character":72},"end":{"line":16,"character":73}},"rangeLength":1,"text":""},{"range":{"start":{"line":16,"character":70},"end":{"line":16,"character":71}},"rangeLength":1,"text":"oo"},{"range":{"start":{"line":15,"character":18},"end":{"line":15,"character":19}},"rangeLength":1,"text":""},{"range":{"start":{"line":15,"character":16},"end":{"line":15,"character":17}},"rangeLength":1,"text":"oo"},{"range":{"start":{"line":14,"character":55},"end":{"line":14,"character":56}},"rangeLength":1,"text":""},{"range":{"start":{"line":14,"character":53},"end":{"line":14,"character":54}},"rangeLength":1,"text":"oo"}]}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 335
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile.dart","version":2},"contentChanges":[{"range":{"start":{"line":16,"character":53},"end":{"line":16,"character":57}},"rangeLength":4,"text":"fooo"}]}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 212
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":20,"method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile.dart"}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 253
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":21,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"position":{"line":14,"character":55}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 210
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":22,"method":"textDocument/foldingRange","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 315
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":23,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"},"range":{"start":{"line":14,"character":55},"end":{"line":14,"character":55}},"context":{"diagnostics":[]}}}
[3:23:39 PM] [Analyzer] [Info] ==> Content-Length: 217
[3:23:39 PM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":24,"method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///Users/sammoore/src/mobile/flutter/app/lib/features/settings/personal_profile/personal_profile_bloc.dart"}}}
Thu May 06 2021 [15:23:42 GMT-0400 (Eastern Daylight Time)] Log file ended

@DanTup
Copy link
Member

DanTup commented May 18, 2021

@samandmoore are you able to reliably reproduce this? How big is your project?

I'm still struggling to repro this. I've been trying on flutter_gallery and I've tried wiping out ~/.dartServer to ensure there are no caches when testing. It only seems to take a few seconds renaming in there though.

@btrautmann
Copy link

@DanTup I work on the same codebase as @samandmoore and am able to reliably reproduce extremely slow (sometimes infinite) interactions. Unfortunately it's made VSCode nearly impossible to use in some fashions (for instance, I can't CMD+click into definitions, I need to manually navigate by searching for them because the CMD+click just hangs). @samandmoore mentioned that for size, we're at about 80K lines of dart.

Here are my logs from attempting a simple local variable rename. I hit the refactor hotkey (shift+f6 for me because I use Intellij key bindings) and things hung infinitely (was never able to rename). Gave up after like 30 seconds of waiting, and here are the logs:

Logs
Dart Code extension: 3.22.0
Flutter extension: 3.22.0 (activated)

App: Visual Studio Code
Version: 1.56.2
Platform: mac

Workspace type: Dart, Flutter
Analyzer type: LSP
Multi-root?: false

Dart SDK:
    Loc: /Users/brandontrautmann/fvm/versions/2.2.0-10.2.pre/bin/cache/dart-sdk
    Ver: 2.13.0-211.13.beta
Flutter SDK:
    Loc: /Users/brandontrautmann/fvm/versions/2.2.0-10.2.pre
    Ver: 2.2.0-10.2.pre

HTTP_PROXY: undefined
NO_PROXY: undefined

Logging Categories:
    General, Analyzer

Tue May 18 2021 [09:52:52 GMT-0400 (Eastern Daylight Time)] Log file started
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 222
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":491,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/test/features/signup/signup_test.dart"},"position":{"line":70,"character":16}}}
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 64
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":491}}
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 234
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":492,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/test/features/signup/signup_test.dart"},"position":{"line":70,"character":17}}}
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 296
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":493,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/test/features/signup/signup_test.dart"},"range":{"start":{"line":70,"character":12},"end":{"line":70,"character":22}},"context":{"diagnostics":[]}}}
[9:52:53 AM] [Analyzer] [Info] ==> Content-Length: 64
[9:52:53 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":476}}
[9:52:54 AM] [Analyzer] [Info] ==> Content-Length: 230
[9:52:54 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":494,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/test/features/signup/signup_test.dart"},"position":{"line":70,"character":22}}}
Tue May 18 2021 [09:53:26 GMT-0400 (Eastern Daylight Time)] Log file ended

@esDotDev
Copy link

Ya if you use VSCode in daily use with Flutter, you will see this constantly. I very often would see it in new files that didn't even have any references, renaming a simple variable would just hang, sometimes not completing at all.

It actually got so bad I ended up fearing renaming, and started opting for manual find and replaces if I new it was all in a single file. Eventually I just switched back to Android Studio, because it's just not a quality work environment when you are constantly sitting there waiting for these actions to complete.

@DanTup
Copy link
Member

DanTup commented May 18, 2021

@btrautmann

Unfortunately it's made VSCode nearly impossible to use in some fashions (for instance, I can't CMD+click into definitions,

This sounds like this issue mentioned above, although it should be fixed in Flutter's beta (and newer) channels. Your logs suggest you're on 2.2.0-10.2, but I can't find exactly what hash that version that is - is it a recent build? Have you seen it recently?

Your log only shows traffic to the server, nothing from it - which certainly makes it seem like the server is busy. Are you able to provide a more complete log, that includes the last things from the server (they will contain <== instead of ==>) as it may be useful to understand what the last requests to the server were when it seemed to stop responding.

@esDotDev

Eventually I just switched back to Android Studio, because it's just not a quality work environment when you are constantly sitting there waiting for these actions to complete.

It's interesting to hear the issue might not occur in Android Studio. Both VS Code and Android Studio are using the same underlying Dart language server. This suggests it may be specific to the LSP layer - I wonder whether anyone here that sees this is not using LSP (to verify, you can hover over the Dart/Flutter version number in the status bar and see whether it says "DAS" or "LSP").

If anyone is able to repro this on a project that's public, I might have more success reproducing it with a specific project and specific rename.

@esDotDev
Copy link

esDotDev commented May 18, 2021

Oh interesting, yes I can confirm that after 2000+ hrs in Android Studio, I've never seen this once. When in VSCode I would see it multiple times per day.

For context though I am a very heavy user of refactoring, I constantly am making new classes, renaming classes, renaming fields. Coming from C# world I learned to be very aggressive with it, because Visual Studio was so rock solid, and have brought a similar workflow to dart. So I probably rename things 20+ times a day, when I'm actively building things out.

The repro case is hard because I found it to be intermittent, like it wouldn't happen twice on the same var... or at least not regularly. I remember a common flow where I would create a new class (Widget), give it like 2 or 3 fields, try and rename one of the fields, and it just spins forever... this would happen a lot. Other times, on much more complex examples, it would be lightning quick. Drives ya crazy!

@samandmoore
Copy link

This sounds like this issue mentioned above, although it should be fixed in Flutter's beta (and newer) channels. Your logs suggest you're on 2.2.0-10.2, but I can't find exactly what hash that version that is - is it a recent build? Have you seen it recently?

@DanTup That's right, we switched to the latest beta release last week because folks were having such a hard time on 2.0.4 and there was speculation that performance fixes were in the beta releases. The revision we're running is https://github.com/flutter/flutter/tree/b5017bf8de877083978bfeb1874d236c3fc83029 (based on a git rev-parse HEAD).

I had actually noticed a massive improvement after switching to this beta release last week (and so did many other folks), but then this week folks are having serious issues again, and no one can identify anything that's changed between then and now.

Also, the codebase is actually about ~288K lines if we include codegen'd lines. It's about 9 packages (some flutter plugins, some pure dart packages, and one big old app package that binds it all together).

@samandmoore
Copy link

samandmoore commented May 18, 2021

Oh! I think i have an idea as to what's happening, abstractly. I've noticed this a few times: I will be happily coding away taking advantage of the performance fixes in the flutter beta release (as you mentioned) and then upon opening some new file I will find that all my tooltips just say "Loading..." and never load and then cmd+click just never goes anywhere. It's as if the analysis server is either completely frozen or has silently died.

I think that when I do cmd+shift+p and then Dart: Restart Analysis Server it recovers, slowly, and then I'm good to go again. The reason I say "think" that fixes it is that I've also seen that not fix it and the only way to recover was to quit VS Code and reopen the project.

So, I think that you're right and we need to get some logging of what was sent to the server before it became unresponsive.

Also, is there a way to retrieve logs from the server itself? For instance, if the server crashed, where would we find those logs?

@btrautmann
Copy link

Your log only shows traffic to the server, nothing from it - which certainly makes it seem like the server is busy. Are you able to provide a more complete log, that includes the last things from the server (they will contain <== instead of ==>) as it may be useful to understand what the last requests to the server were when it seemed to stop responding.

Hoping this helps. In this case, I restarted the server like @samandmoore mentioned, hit refactor (rename), and it seemed to hang for 8-10 seconds, so I did another refactor (rename) and it worked almost instantly. Not sure if there are any useful logs here, but there is traffic from the server. Perhaps something in the initial traffic to the server is indicative of the problem with the initial hang?

Logs
Dart Code extension: 3.22.0
Flutter extension: 3.22.0 (activated)

App: Visual Studio Code
Version: 1.56.2
Platform: mac

Workspace type: Dart, Flutter
Analyzer type: LSP
Multi-root?: false

Dart SDK:
    Loc: /Users/brandontrautmann/fvm/versions/2.2.0-10.2.pre/bin/cache/dart-sdk
    Ver: 2.13.0-211.13.beta
Flutter SDK:
    Loc: /Users/brandontrautmann/fvm/versions/2.2.0-10.2.pre
    Ver: 2.2.0-10.2.pre

HTTP_PROXY: undefined
NO_PROXY: undefined

Logging Categories:
    General, Analyzer

Tue May 18 2021 [11:45:32 GMT-0400 (Eastern Daylight Time)] Log file started
[11:45:34 AM] [Analyzer] [Info] ==> Content-Length: 217
[11:45:34 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":5,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"position":{"line":43,"character":9}}}
[11:45:35 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:35 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":5}}
[11:45:35 AM] [Analyzer] [Info] ==> Content-Length: 292
[11:45:35 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":6,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"range":{"start":{"line":44,"character":14},"end":{"line":44,"character":14}},"context":{"diagnostics":[]}}}
[11:45:35 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:35 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":2}}
[11:45:35 AM] [Analyzer] [Info] ==> Content-Length: 226
[11:45:35 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":7,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"position":{"line":44,"character":14}}}
[11:45:39 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:39 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":7}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 292
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":8,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"range":{"start":{"line":44,"character":13},"end":{"line":44,"character":13}},"context":{"diagnostics":[]}}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":6}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 226
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":9,"method":"textDocument/prepareRename","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"position":{"line":44,"character":10}}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 293
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","id":10,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"range":{"start":{"line":44,"character":10},"end":{"line":44,"character":10}},"context":{"diagnostics":[]}}}
[11:45:40 AM] [Analyzer] [Info] ==> Content-Length: 62
[11:45:40 AM] [Analyzer] [Info] ==> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":8}}
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 1057
Content-Type: application/vscode-jsonrpc; charset=utf-8
[11:45:41 AM] [Analyzer] [Info] <== {"id":4,"jsonrpc":"2.0","result":[{"startLine":5,"startCharacter":43,"endLine":16,"endCharacter":0},{"startLine":18,"startCharacter":54,"endLine":54,"endCharacter":0},{"startLine":20,"startCharacter":20,"endLine":25,"endCharacter":2},{"startLine":22,"startCharacter":51,"endLine":24,"endCharacter":5},{"startLine":22,"startCharacter":56,"endLine":24,"endCharacter":4},{"startLine":28,"startCharacter":38,"endLine":41,"endCharacter":2},{"startLine":29,"startCharacter":24,"endLine":40,"endCharacter":4},{"startLine":31,"startCharacter":25,"endLine":39,"endCharacter":6},{"startLine":32,"startCharacter":22,"endLine":38,"endCharacter":8},{"startLine":33,"startCharacter":21,"endLine":36,"endCharacter":10},{"startLine":43,"startCharacter":88,"endLine":53,"endCharacter":2},{"startLine":45,"startCharacter":35,"endLine":51,"endCharacter":4},{"startLine":46,"startCharacter":50,"endLine":47,"endCharacter":89},{"startLine":48,"startCharacter":14,"endLine":49,"endCharacter":49},{"startLine":0,"startCharacter":6,"endLine":3,"endCharacter":48,"kind":"imports"}]}
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 186
Content-Type: application/vscode-jsonrpc; charset=utf-8
[11:45:41 AM] [Analyzer] [Info] <== {"method":"textDocument/publishDiagnostics","params":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart","diagnostics":[]},"jsonrpc":"2.0"}
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 487
Content-Type: application/vscode-jsonrpc; charset=utf-8
[11:45:41 AM] [Analyzer] [Info] <== {"method":"dart/textDocument/publishClosingLabels","params":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart","labels":[{"range":{"start":{"line":29,"character":11},"end":{"line":40,"character":5}},"label":"WillPopScope"},{"range":{"start":{"line":31,"character":13},"end":{"line":39,"character":7}},"label":"AppScaffold"},{"range":{"start":{"line":32,"character":14},"end":{"line":38,"character":9}},"label":"InkWell"}]},"jsonrpc":"2.0"}
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 4404
Content-Type: application/vscode-jsonrpc; charset=utf-8
[11:45:41 AM] [Analyzer] [Info] <== {"method":"dart/textDocument/publishOutline","params":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart","outline":{"element":{"range":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"children":[{"element":{"range":{"start":{"line":5,"character":6},"end":{"line":5,"character":18}},"name":"EmbeddedHome","kind":"CLASS"},"range":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"codeRange":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"children":[{"element":{"range":{"start":{"line":6,"character":8},"end":{"line":6,"character":20}},"name":"EmbeddedHome","kind":"CONSTRUCTOR","parameters":"({Key key, @required this.embeddedFeatureManager})"},"range":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}},"codeRange":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}}},{"element":{"range":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}},"name":"embeddedFeatureManager","kind":"FIELD","returnType":"EmbeddedFeatureManager"},"range":{"start":{"line":12,"character":2},"end":{"line":12,"character":54}},"codeRange":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}}},{"element":{"range":{"start":{"line":15,"character":21},"end":{"line":15,"character":32}},"name":"createState","kind":"METHOD","parameters":"()","returnType":"_EmbeddedHomeState"},"range":{"start":{"line":14,"character":2},"end":{"line":15,"character":59}},"codeRange":{"start":{"line":15,"character":2},"end":{"line":15,"character":59}}}]},{"element":{"range":{"start":{"line":18,"character":6},"end":{"line":18,"character":24}},"name":"_EmbeddedHomeState","kind":"CLASS"},"range":{"start":{"line":18,"character":0},"end":{"line":54,"character":1}},"codeR…
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 4586
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"dart/textDocument/publishFlutterOutline","params":{"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart","outline":{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"name":"<unit>","kind":"COMPILATION_UNIT"},"range":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"codeRange":{"start":{"line":0,"character":0},"end":{"line":55,"character":0}},"children":[{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":5,"character":6},"end":{"line":5,"character":18}},"name":"EmbeddedHome","kind":"CLASS"},"range":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"codeRange":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"children":[{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":6,"character":8},"end":{"line":6,"character":20}},"name":"EmbeddedHome","kind":"CONSTRUCTOR","parameters":"({Key key, @required this.embeddedFeatureManager})"},"range":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}},"codeRange":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}}},{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}},"name":"embeddedFeatureManager","kind":"FIELD","returnType":"EmbeddedFeatureManager"},"range":{"start":{"line":12,"character":2},"end":{"line":12,"character":54}},"codeRange":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}}},{"kind":"DART_ELEMENT","dartElement":{"range":{"start":{"line":15,"character":21},"end":{"line":15,"character":32}},"name":"createState","kind":"METHOD","parameters":"()","returnType":"_EmbeddedHomeState"},"range":{"start":{"line":14,"character":2},"end":{"line":15,"character":59}},"codeRange":{"start":{"line":15,"character":2},"end":{"line":15,"character":59}}}…
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 118
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"method":"$/progress","params":{"token":"ANALYZING","value":{"kind":"begin","title":"Analyzing…"}},"jsonrpc":"2.0"}Content-Length: 1968
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":1,"jsonrpc":"2.0","result":[{"name":"EmbeddedHome","kind":5,"deprecated":false,"range":{"start":{"line":5,"character":0},"end":{"line":16,"character":1}},"selectionRange":{"start":{"line":5,"character":6},"end":{"line":5,"character":18}},"children":[{"name":"EmbeddedHome","detail":"({Key key, @required this.embeddedFeatureManager})","kind":9,"deprecated":false,"range":{"start":{"line":6,"character":2},"end":{"line":10,"character":24}},"selectionRange":{"start":{"line":6,"character":8},"end":{"line":6,"character":20}}},{"name":"embeddedFeatureManager","kind":8,"deprecated":false,"range":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}},"selectionRange":{"start":{"line":12,"character":31},"end":{"line":12,"character":53}}},{"name":"createState","detail":"()","kind":6,"deprecated":false,"range":{"start":{"line":15,"character":2},"end":{"line":15,"character":59}},"selectionRange":{"start":{"line":15,"character":21},"end":{"line":15,"character":32}}}]},{"name":"_EmbeddedHomeState","kind":5,"deprecated":false,"range":{"start":{"line":18,"character":0},"end":{"line":54,"character":1}},"selectionRange":{"start":{"line":18,"character":6},"end":{"line":18,"character":24}},"children":[{"name":"initState","detail":"()","kind":6,"deprecated":false,"range":{"start":{"line":20,"character":2},"end":{"line":25,"character":3}},"selectionRange":{"start":{"line":20,"character":7},"end":{"line":20,"character":16}}},{"name":"build","detail":"(BuildContext context)","kind":6,"deprecated":false,"range":{"start":{"line":28,"character":2},"end":{"line":41,"character":3}},"selectionRange":{"start":{"line":28,"character":9},"end":{"line":28,"character":14}}},{"name":"_onFeatureStarted","detai…
[11:45:41 AM] [Analyzer] [Info] <== Content-Length: 1278
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":3,"jsonrpc":"2.0","result":{"data":[0,0,6,1,0,0,7,43,14,0,1,0,6,1,0,0,7,31,14,0,1,0,6,1,0,0,7,32,14,0,1,0,6,1,0,0,7,40,14,0,2,0,5,1,0,0,6,12,2,0,0,13,7,1,0,0,8,14,2,0,1,8,12,2,0,1,4,3,2,0,0,4,3,5,2,1,4,1,0,0,0,1,8,9,0,0,14,22,4,0,1,15,22,5,0,0,26,4,1,0,1,8,5,1,0,0,6,3,5,16,0,5,3,5,0,2,2,5,1,0,0,6,22,2,0,0,23,22,4,2,2,2,1,0,0,0,1,8,9,0,1,2,18,2,0,0,19,11,10,2,0,17,18,2,0,3,0,5,1,0,0,6,18,2,0,0,19,7,1,0,0,8,5,2,0,0,6,12,2,0,1,2,1,0,0,0,1,8,9,0,1,2,4,1,0,0,5,9,10,2,1,10,9,10,0,1,4,16,2,0,0,17,8,9,4,0,9,20,10,0,0,22,1,5,2,1,6,6,9,0,0,7,22,9,0,0,23,4,10,0,0,5,17,10,0,4,2,1,0,0,0,1,8,9,0,1,2,6,2,0,0,7,5,10,2,0,6,12,2,0,0,13,7,5,2,1,4,6,1,8,0,7,12,2,0,1,6,9,5,16,0,14,5,1,8,0,9,5,12,0,1,6,5,5,16,0,7,11,2,0,1,8,4,5,16,0,6,7,2,0,1,10,5,5,16,1,12,5,15,0,0,6,45,14,0,1,12,6,9,0,0,7,22,9,0,0,23,9,10,0,2,10,5,5,16,0,7,5,1,0,0,6,8,2,0,0,9,6,2,0,6,2,6,2,0,0,7,4,1,0,0,6,17,10,2,0,18,26,2,0,0,27,19,5,2,0,21,5,1,8,1,4,5,1,0,0,6,5,4,2,0,8,19,5,0,0,20,7,9,0,0,8,7,10,0,1,4,5,1,0,0,6,6,4,2,0,9,5,1,8,0,9,5,1,8,1,6,2,1,8,0,4,19,5,0,0,20,17,9,0,1,8,6,1,8,0,7,9,2,0,0,10,2,10,4,0,3,7,9,0,0,9,18,10,0,0,19,5,4,0,0,8,5,5,2,0,10,5,5,0,0,6,7,9,0,1,8,4,1,8,1,8,6,1,8,0,7,9,2,0,0,10,2,10,4,0,3,7,9,0,0,9,4,10,0,0,5,5,4,0,3,4,6,9,0,0,7,22,9,0,0,23,11,10,0,0,12,19,5,0,0,20,7,9,0,0,9,6,4,0]}}Content-Length: 82
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":2,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 82
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":5,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 82
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":7,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 135
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":9,"jsonrpc":"2.0","result":{"range":{"start":{"line":44,"character":…
[11:45:41 AM] [Analyzer] [Info] <== {"id":6,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 82
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":8,"jsonrpc":"2.0","error":{"code":-32800,"message":"Request was cancelled"}}Content-Length: 1023
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":10,"jsonrpc":"2.0","result":[{"title":"Sort Members","kind":"source.sortMembers","command":{"title":"Sort Members","command":"edit.sortMembers","arguments":["/Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"]}},{"title":"Organize Imports","kind":"source.organizeImports","command":{"title":"Organize Imports","command":"edit.organizeImports","arguments":["/Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"]}},{"title":"Add type annotation","kind":"refactor.add.typeAnnotation","diagnostics":[],"edit":{"documentChanges":[{"textDocument":{"version":3,"uri":"file:///Users/brandontrautmann/src/mobile/flutter/app/lib/widgets/home/embedded_home.dart"},"edits":[{"range":{"start":{"line":44,"character":10},"end":{"line":44,"character":10}},"newText":"Route<FeatureResult> "},{"range":{"start":{"line":0,"character":51},"end":{"line":0,"character":51}},"newText":"\nimport 'package:betterment_flutter/shared/feature_result/feature_result.dart';"}]}]}}]}
Tue May 18 2021 [11:45:44 GMT-0400 (Eastern Daylight Time)] Log file ended

@Tasen-pro
Copy link

For me it takes 1 minute in first run and 1 - 3 seconds in consequent ones

@DanTup
Copy link
Member

DanTup commented Jan 18, 2022

Repeating a request from above for anyone new that's commented here. For those that can reliably reproduce this, some things that may help:

  • A shareable public project this has been reproduced in, so I can use exactly the same code
  • Testing whether disabling dart.autoImportCompletions changes this behaviour (if it still happens with this disabled, a server instrumentation log taken while reproducing may be useful - though note that it may include parts of your source code)
  • Ensuring you're on the latest stable SDK and LSP is enabled (hover of the Dart SDK version in the status bar to see if the tooltip contains "LSP")

I've seen this a few times, but then never been able to reproduce it (even if I subsequently clear ~/.dartServer).

@6h4n3m
Copy link

6h4n3m commented Apr 27, 2023

Hey @DanTup
I'm attaching an instrumentation log reproducing this issue (using go to symbol, which in the project I opened took almost 30 seconds)

I have an even larger project (monorepo with multiple Dart/Flutter projects and that takes minutes to execute a rename or a Go To Symbol in Workspace) but I cannot share any logs from that project

instrumentation-go to symbol.log

The same operations in Intellij are instant across both projects, and the project I shared the log from is a medium sized one.

@6h4n3m
Copy link

6h4n3m commented Apr 27, 2023

I would really like to work with you towards a resolution, so reach out any time with any further info you need...

@DanTup
Copy link
Member

DanTup commented Apr 28, 2023

@6h4n3m there's an open issue at #4106 about the workspace symbol list (it's possible they have the same cause, but the fixes might end up being different).

There have been some improvements made that might not be in stable yet (but would certainly be in beta).. I'd be interested to know whether you see a difference on the beta channel, and also how large your workspace is (in particular, how many folders have pubspec.yaml/analysis_options.yaml files). If you can post this info on #4106, it'll be easier to track data/logs for each item separately. Thanks!

@FMorschel
Copy link

I found this issue today. I see there have been no comments for almost a year now and the above-mentioned issue is already closed. Is there any news? This issue has not as many thumbs up as the first upvoted one, but it is still the second in that rank.

@DanTup
Copy link
Member

DanTup commented Apr 9, 2024

Unfortunately there isn't currently a lot of information in this issue to help debug. My comment above (#2231 (comment)) had some notes about helping track this down - if you're seeing this issue and can provide repro steps/project or log files when it happens, that may help debug.

Although this issue has a lot of 👍 's and comments above, it's been quiet for a while (as you noted) so it's not clear if many people are still affected by this. I had personally seen the behaviour described here a few times in the past (but then struggled to reproduce with logs), but I don't recall seeing it for a very long time now. Quite a lot has changed since this issue was first opened (the original logs above are the original analysis server protocol and now everything is LSP).

Perhaps it would be better to close this issue and open a new one with more specifics about the issue you're seeing (and if you post the link here, anyone in this thread that's still seeing it can add a 👍 that might help gauge how widespread the issue is now).

@FMorschel - do you want to file a new issue with some more specifics and we'll close this one to focus on what we know is still a problem today?

@FMorschel
Copy link

I'll try and see if I can reproduce it again and create a new issue with reproducible steps then.

I do agree with you, this one can be closed. If I end up reproducing it, or anyone else, we can add a comment here so that everyone following this one can go to the new issue.

@DanTup
Copy link
Member

DanTup commented Apr 9, 2024

sgtm - closing this one and we'll pick this up in new issue(s) with more recent info.

@DanTup DanTup closed this as completed Apr 9, 2024
@DanTup DanTup removed this from the On Deck milestone Apr 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in editor Relates to code editing or language features in lsp/analysis server Something to be fixed in the Dart analysis server is bug
Projects
None yet
Development

No branches or pull requests