Stellen Sie die boolesche Funktion isLoading beim Flattern auf false
Ich möchte die Funktion zur Überprüfung der Flatterkonnektivität in meine App integrieren. Nach der Integration funktioniert sie hervorragend für alle Widgets, aber in meinem Fall für die setState-Methode kann die Methode isLoading nicht falsch sein.
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
),
);
}
Hier ist die Check-Methode für das Internet, bei der ich das Widget homeItems () verwendet habe, um meine Inhalte im Falle einer Konnektivität anzuzeigen
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");
}
}
Und hier ist das Widget My homeItems, das in der checkStatus-Methode verwendet wird. als Ergebnis = 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)),
),
],
),
);
}
}
Nachdem ich alle Apps ausgeführt habe, wird der Bildschirm ohne Fehler leer angezeigt. Bitte schauen Sie nach, um dieses Problem zu lösen. Dankeschön
Antworten
benutze versuchen und endlich. und setze isLoading schließlich auf false in