DEV Community

Enrique Marques Junior
Enrique Marques Junior

Posted on • Edited on

4 3

[pt-BR] Flutter no NeoVim

Neste post descrevo como configurei meu vim para trabalhar com a linguagem Dart e o framework Flutter.

Suporte a linguagem

O básico é instalar o suporte a linguagem. Com isso já temos 'syntax highlighting' e 'indentation'.

❕instalação

Para mais detalhes sobre como instalar os plugins acesse o repositório do gerenciador vim-plug.

Para instalar o dart-vim-plugin:

Plug 'dart-lang/dart-vim-plugin'
Enter fullscreen mode Exit fullscreen mode

Setup & Configurações

Se você já utilizou o VSCode, sabe que existe um plugin ~ eu diria que obrigatório ~ para integrar o editor ao Flutter. Para obter os mesmos benefícios no vim utilizei o coc.vim com a extensão coc-flutter.

CoC.vim & coc-flutter

Primeiro, instale o coc.vim:

Plug 'neoclide/coc.nvim', {'branch': 'release'}
Enter fullscreen mode Exit fullscreen mode

Em seguida, instale a extensão para o Flutter.

:CocInstall coc-flutter
Enter fullscreen mode Exit fullscreen mode

Você pode configurar o Ctrl+Space para abrir as janelas de sugestões.

Configuração:

inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" :
      \ <SID>check_back_space() ? "\<TAB>" :
      \ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"

function! s:check_back_space() abort
  let col = col('.') - 1
  return !col || getline('.')[col - 1]  =~# '\s'
endfunction

inoremap <silent><expr> <c-space> coc#refresh()
Enter fullscreen mode Exit fullscreen mode

Assim as sugestões aparecem ao digitar também e com o <TAB> se navega nas opções.

Confira no README do projeto um exemplo de configuração

Navegar para definição:

nmap <silent> gf <Plug>(coc-definition)
Enter fullscreen mode Exit fullscreen mode

(coc-definition)

Ações de código

Com este recurso você consegue executar ações no seu código como adicionar, remover ou extrair um widget para uma classe ou método.

Seguindo o README, configuramos desta forma:

xmap <leader>a  <Plug>(coc-codeaction-selected)
nmap <leader>a  <Plug>(coc-codeaction-selected)
Enter fullscreen mode Exit fullscreen mode

Assim você pode utilizar o comando <leader>a no modo visual/seleção ou <leader>aw se estiver no modo normal. Para receber apenas sugestões de imports ou organizar o arquivo você pode utilizar <leader>aap.

 raw `<leader>aw` endraw

Flutter: Run, Reload, Restart & DevLog

A extensão coc-flutter habilita os comandos do Flutter SDK e assim podemos listar os comandos:

CocList --input=flutter commands
Enter fullscreen mode Exit fullscreen mode

Você pode configurar alguns atalhos:

nmap <leader>fc  :CocList --input=flutter commands<CR>
nmap <leader>fe  :CocCommand flutter.emulators<CR>
nmap <leader>fr  :CocCommand flutter.run<CR>
nmap <leader>fq  :CocCommand flutter.dev.quit<CR>
nmap <leader>fh  :CocCommand flutter.dev.hotRestart<CR>
nmap <leader>fl  :CocCommand flutter.dev.openDevLog<CR>
Enter fullscreen mode Exit fullscreen mode

Os comandos flutter.dev.* só aparecem após a execução dos comandos run ou attach.

Meu nvim config

Para ficar como exemplo, vou deixar aqui o meu init.vim.

nvim-config

my nvim config

requirements

color scheme

install

:PaqInstall
:PaqSync

:LspInstall lua
:LspInstall typescript
:LspInstall html
:LspInstall css

:TSInstall lua
:TSInstall javascript
:TSInstall typescript
:TSInstall json
:TSInstall html
:TSInstall css
:TSInstall yaml
:TSInstall dart
Enter fullscreen mode Exit fullscreen mode

Qualquer coisa estamos ai nos comentários 😄
Um abraço!

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (2)

Collapse
 
hubdev4 profile image
HubDev

Very useful post, thank you!

Collapse
 
marciokuroki profile image
marciokuroki

Parabéns pelo post!

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more