Transforme a função booleana isLoading em falsa em flutter

Aug 31 2020

Eu quero integrar a função de verificação de conectividade de vibração em meu aplicativo, e depois de integrá-la está funcionando muito bem para todos os widgets, mas no meu caso para o método setState, ele não pode ser o método isLoading falso.

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  bool isLoading = true;
  Widget result;
  RecipeService _recipeService = RecipeService();
  List<Recipe> _recipeList = List<Recipe>();

  @override
  void initState() {
    super.initState();
    _getRecipe();
    checkStatus();
  }

  _getRecipe() async {
    var dayRecipes = await _recipeService.getRecipeOfTheDay();
    var _list= json.decode(dayRecipes.body);
    List<Recipe> results = [];
    _list['data'].forEach((data) {
      var model = Recipe();
      model.id = data['id'];
      model.title = data['recipeTitle'];
      model.ingredients = data['recipeIngredient'];
      model.directions = data['recipeDirection'];
      model.cookTime = data['cookTime'].toString();
      model.image = data['recipePhoto'];
      results.add(model);
     });
      setState(() {
        _dayRecipeList = results;
        isLoading = false;
      });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("My Recipe"),
      ),
      body: Container(
        alignment: Alignment.center,
        child: result
      ),
    );
  }

Aqui está o método de verificação para internet, onde usei o widget homeItems () para exibir meu conteúdo em caso de conectividade

  void checkStatus() async {
    var connectivityResult = await (Connectivity().checkConnectivity());
    if (connectivityResult == ConnectivityResult.mobile || connectivityResult == ConnectivityResult.wifi) {
      result = homeItems();
      setState(() {});
    } else {
      result = Text("Unable to connect. Please Check Internet Connection");
      setState(() {});
      print("Unable to connect. Please Check Internet Connection");
    }
  }

E aqui está o widget My homeItems, que é usado no método checkStatus. como resultado = homeItems ();

 Widget homeItems(){
    Center(
           child: isLoading
               ? CircularProgressIndicator(
                   backgroundColor: Colors.blue,
                   strokeWidth: 10,
                 )
               : ListView(
                   children: [
                      Padding(
                       padding: const EdgeInsets.all(8.0),
                       child: Text("All Recipes",
                           style: TextStyle(
                               fontSize: 25,
                               color: Colors.red,
                               fontWeight: FontWeight.bold)),
                     ),
                     RecipesOfDay(dayRecipeList: _dayRecipeList),
                     Padding(
                       padding: const EdgeInsets.all(8.0),
                       child: Text("All Recipes",
                           style: TextStyle(
                               fontSize: 25,
                               color: Colors.red,
                               fontWeight: FontWeight.bold)),
                     ),

                   ],
                 ),
         );
  }
}

Depois de executar todo o aplicativo estou recebendo a tela em branco sem nenhum erro. Por favor, dê uma olhada para resolver este problema. Obrigado

Respostas

THEODORE Aug 31 2020 at 18:03

use try e finalmente. e definir isLoading como falso em finalmente