Ceci est le code que j'utilise, j'ai créé un nouveau nom de nom de dossier Page d'accueil dans le dossier LIB et a placé mon fichier home.dart là-bas, tout était génial jusqu'à ce que je reçoive d'être instasié. Stetstate ne fonctionne tout simplement pas.
Main.Dart Code P>
import 'package:flutter/material.dart';
class DarkXAppHomePage {
var _isLoading = true;
createHomePage(){
var homePageScaffold = createHomePageScaffold();
return MaterialApp(home: homePageScaffold, debugShowCheckedModeBanner: false);
}
//Scaffold For Home Page
createHomePageScaffold(){
var homeAppbar = homeAppBar();
var homebody = homeBody();
var scaffold = new Scaffold(appBar: homeAppbar, body: homebody,);
return scaffold;
}
//AppBar For Home Page
homeAppBar(){
var text = createText('Welcome');
var refreshbutton = refreshButton(refreshHomePage);
var appBar = new AppBar(title: text,actions: <Widget>[refreshbutton],);
return appBar;
}
//Body For Home Page
homeBody(){
var loadingState = _isLoading ? CircularProgressIndicator() : createText('Finished Loading');
return new Center(child: loadingState);
}
refreshButton(Function onPress){
var refreshicon = refreshIcon();
var refreshbutton = new IconButton(icon: refreshicon, onPressed: (){
onPress();
},);
return refreshbutton;
}
//homepage Refresh Action
refreshHomePage(){
setState(){
_isLoading = false;
}
}
//Create Text
createText( String text ){
var newText = new Text(text);
return newText;
}
//Refresh Icon
refreshIcon(){
var refreshicon = new Icon(Icons.refresh);
return refreshicon;
}
}
3 Réponses :
Vous pouvez utiliser une fonction de rappel lorsque vous passez une fonction sur un autre widget Votre code a l'air trop conçu, peut-être que des choses simplifiées facilitent la compréhension. Et toujours déclarer type pour être une bonne habitude. P> p>
Cela fonctionnera comme ceci, peut-être que moi mais fondé difficile de suivre votre code comme vous l'avez.
L'ensemble STSTAT doit être à l'intérieur de l'état étatique, ou être envoyé sous forme de paramètre à partir de là. P>
import 'package:flutter/material.dart';
main() => runApp(new DarkX());
class DarkX extends StatefulWidget {
@override
_DarkXState createState() => _DarkXState();
}
class _DarkXState extends State<DarkX> {
var _isLoading = true;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: createHomePageScaffold(), debugShowCheckedModeBanner: false);
}
//Scaffold For Home Page
createHomePageScaffold() {
var homeAppbar = homeAppBar();
var homebody = homeBody();
var scaffold = new Scaffold(
appBar: homeAppbar,
body: homebody,
);
return scaffold;
}
//AppBar For Home Page
homeAppBar() {
var text = createText('Welcome');
var refreshbutton = refreshButton(refreshHomePage);
var appBar = new AppBar(
title: text,
actions: <Widget>[refreshbutton],
);
return appBar;
}
//Body For Home Page
homeBody() {
var loadingState = _isLoading
? CircularProgressIndicator()
: createText('Finished Loading');
return new Center(child: loadingState);
}
refreshButton(Function onPress) {
var refreshicon = refreshIcon();
var refreshbutton = new IconButton(
icon: refreshicon,
onPressed: () {
onPress();
},
);
return refreshbutton;
}
//homepage Refresh Action
refreshHomePage() {
setState(() {
_isLoading = false;
});
}
//Create Text
createText(String text) {
var newText = new Text(text);
return newText;
}
//Refresh Icon
refreshIcon() {
var refreshicon = new Icon(Icons.refresh);
return refreshicon;
}
}
Cela m'a donné la bonne idée .. de ce que je faisais mal .. Thancix Mate.
La première chose à laquelle vous devriez vous rappeler que la méthode La première étape, vous devriez lire Ce docs à nouveau soigneusement. P> La deuxième étape, je vous aiderai à modifier votre source. P> } p> étape 2 strong>: raccourcissez ceci pour faciliter la lecture. (Peut-être pas facile à comprendre. Cependant, nous la mettrons à la mettre à jour bientôt.). P> SetState () CODE> est une méthode d'un état Etat setstate () code> méthode de darkxapphomePage code> classe. La classe code> darkxapphomePage code> n'est pas à la fois des de la classe code> Classe et Sous-classe de l'état Code>. Donc, cette raison, votre code n'a pas fonctionné. Votre méthode SETState () CODE> a fait un mauvais outil. Votre solution pour vous, je vous conseille 2 étapes. main() => runApp(DarkX());
class DarkX extends StatelessWidget {
@override
Widget build(BuildContext context) => DarkXAppHomePage();
}
Merci pour votre aide.. :)
@Surjavaghosh: acceptez ma réponse si c'est utile.
Ouais ... merci mate tu me suis sorti d'une liasse sérieuse ..