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

Hot Reload não funcionando em rotas com parâmetros #748

Open
NeyDavid opened this issue Jun 27, 2022 · 10 comments
Open

Hot Reload não funcionando em rotas com parâmetros #748

NeyDavid opened this issue Jun 27, 2022 · 10 comments
Assignees
Labels
new New issue request attention

Comments

@NeyDavid
Copy link

NeyDavid commented Jun 27, 2022

Quando tento realizar hot reload em rotas que recebe algum tipo de parâmetro, no flutter web, recebo um erro de parametro nulo:

The following TypeErrorImpl was thrown building Builder:
Expected a value of type 'String', but got one of type 'Null'
The relevant error-causing widget was:
MaterialApp

Flutter Doctor:

[√] Flutter (Channel stable, 2.10.5, on Microsoft Windows [versão 10.0.19044.1766], locale pt-BR)
• Flutter version 2.10.5 at C:\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 5464c5bac7 (2 months ago), 2022-04-18 09:55:37 -0700
• Engine revision 57d3bac3dd
• Dart version 2.16.2
• DevTools version 2.9.2

[√] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
• Android SDK at C:\Users\Ney\AppData\Local\Android\sdk
• Platform android-32, build-tools 32.1.0-rc1
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)
• All Android licenses accepted.

[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[X] Visual Studio - develop for Windows
X Visual Studio not installed; this is necessary for Windows development.
Download at https://visualstudio.microsoft.com/downloads/.
Please install the "Desktop development with C++" workload, including all of its default components

[√] Android Studio (version 2021.1)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)

[√] VS Code (version 1.68.1)
• VS Code at C:\Users\Ney\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.42.0

[√] Connected device (3 available)
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [versão 10.0.19044.1766]
• Chrome (web) • chrome • web-javascript • Google Chrome 103.0.5060.53
• Edge (web) • edge • web-javascript • Microsoft Edge 103.0.1264.37

[√] HTTP Host Availability

PubSpec.yaml: (Venho enfrentando esse problema em um projeto grande que eu tenho, criei um projeto do zero para fazer um teste)

name: teste_hot_reload
description: A new Flutter project.

publish_to: 'none'
version: 1.0.0+1

environment:
sdk: ">=2.16.2 <3.0.0"

dependencies:
flutter:
sdk: flutter

cupertino_icons: ^1.0.2
flutter_modular: ^5.0.3

dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.0

flutter:
uses-material-design: true

To Reproduce: Criei um projeto do zero para reproduzir o problema, mas você pode reproduzir esse problema tendo alguma rota com parâmetro e efetuando alguma alteração nessa tela, quando você salvar pelo vscode, o hot reload irá falhar pois o seu parâmetro vai estar nulo. Testei com o Navigator.push e não enfrentei esse problema, creio que esse problema seja realmente com o modular.
Creio que o comportamento normal seria ele retornar para o inicio da aplicação, ou efetuar o hot reload na mesma tela.

image
image

@NeyDavid NeyDavid added the new New issue request attention label Jun 27, 2022
@joceljunior
Copy link

Estou com o mesmo problema!

@eduardoflorence
Copy link

Não existe ainda no Flutter Web a funcionalidade de hot reload, somente hot restart mantendo apenas a url, logo você perde todo o seu estado. Esta é grande diferença entre desenvolver para web e para mobile.
O que você pode fazer é passar o parâmetro pela URL. Exemplo: /segunda-pagina?nome=Jocel
Ou armazenar o argumento via SharedPreferences e buscar dele quando não conseguir obter via rota

Fonte: flutter/flutter#53041

@joceljunior
Copy link

Não existe ainda no Flutter Web a funcionalidade de hot reload, somente hot restart mantendo apenas a url, logo você perde todo o seu estado. Esta é grande diferença entre desenvolver para web e para mobile. O que você pode fazer é passar o parâmetro pela URL. Exemplo: /segunda-pagina?nome=Jocel Ou armazenar o argumento via SharedPreferences e buscar dele quando não conseguir obter via rota

Fonte: flutter/flutter#53041

Entendo isso, porem, creio que não muda o fato de ter algum erro no modular, se eu utilizo o Navigator, por exemplo, ele não me da um erro, ele automaticamente me leva para o inicio da aplicação! Estou enfrentando bastante dificuldade de produtividade, pois preciso gerar um novo build a cada alteração!

@joceljunior
Copy link

Temos alguma atualização sobre isso?

@raphaelbarbosaqwerty
Copy link
Contributor

Algum de vocês tem um código que eu consiga reproduzir aqui?

@joceljunior
Copy link

Algum de vocês tem um código que eu consiga reproduzir aqui?
Fala Kuringão, segue esse projeto que criei do zero junto com o meu brother
https://github.com/NeyDavid/teste_hot_reload

@eduardoflorence
Copy link

Eu vi o repositório acima @joceljunior. Na Web isso sempre vai dar erro, não é culpa do Modular, como lhe expliquei no meu comentário anterior. Nem é correto voltar para o início da aplicação automaticamente como você disse que o Navigator faz, pois nos impede de tratar o problema e tomar a nossa decisão, por exemplo, fazer apenas um pop caso o nome esteja nulo.

@joceljunior
Copy link

Eu vi o repositório acima @joceljunior. Na Web isso sempre vai dar erro, não é culpa do Modular, como lhe expliquei no meu comentário anterior. Nem é correto voltar para o início da aplicação automaticamente como você disse que o Navigator faz, pois nos impede de tratar o problema e tomar a nossa decisão, por exemplo, fazer apenas um pop caso o nome esteja nulo.

Cara, só acho estranho que isso não acontecia antes, uso o flutter web faz um tempo relativamente grande, nunca enfrentei problema com isso! Enfim a solução é guardar os parâmetros local e sempre buscar na tela que desejar, mas isso é uma alteração muito grande no meu projeto atual! Pode não ser correto o comportamento do Navigator, mas ele me atende, o grande problema é ter que gerar um novo build a cada alteração ...

@EricCastr0
Copy link

Olá você conseguiu resolver esse problema de alguma forma? Está ocorrendo o mesmo aqui comigo.

@jacobaraujo7
Copy link
Contributor

Poderia checar se a v6 resolveu esse problema?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new New issue request attention
Projects
None yet
Development

No branches or pull requests

7 participants