0
votes

Je suis nouveau pour flotter et je suis en train de se lier à l'opération SSTATE, j'essaie d'organiser le code dans un bloc par bloc de bloc, mais la création de l'ensemble ne fonctionne pas,

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;
    }

}


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser une fonction de rappel lorsque vous passez une fonction sur un autre widget xxx

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.


0 commentaires

0
votes

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;
  }
}


1 commentaires

Cela m'a donné la bonne idée .. de ce que je faisais mal .. Thancix Mate.



0
votes

La première chose à laquelle vous devriez vous rappeler que la méthode SetState () CODE> est une méthode d'un état Etat Code>. Selon votre code source, vous appelez 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.

La première étape, vous devriez lire Ce docs à nouveau soigneusement. P>

La deuxième étape, je vous aiderai à modifier votre source. P>

Étape 1 STRUT>: Votre Source originale. p> xxx pré>

} 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>

main() => runApp(DarkX());

class DarkX extends StatelessWidget {
  @override
  Widget build(BuildContext context) => DarkXAppHomePage();
}


3 commentaires

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 ..