DEV Community

Enrique Marques Junior
Enrique Marques Junior

Posted on • Updated on

[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!

Top comments (2)

Collapse
 
hubdev4 profile image
HubDev

Very useful post, thank you!

Collapse
 
marciokuroki profile image
marciokuroki

Parabéns pelo post!