Open NeyDavid opened 2 years ago
Estou com o mesmo problema!
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
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!
Temos alguma atualização sobre isso?
Algum de vocês tem um código que eu consiga reproduzir aqui?
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
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.
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 ...
Olá você conseguiu resolver esse problema de alguma forma? Está ocorrendo o mesmo aqui comigo.
Poderia checar se a v6 resolveu esse problema?
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.