0
votes

Passer des données d'un widget personnalisé Textfield à une calculatrice

J'essaie de passer des données à partir d'un widget personnalisé contenant un champ de texte à un widget de calculatrice. Le problème que je suis confronté est que j'espérise d'utiliser mon widget personnalisé pour créer plusieurs entrées pouvant aller à la calculatrice (c'est-à-dire la hauteur et le poids). Quelqu'un peut-il aider à passer les données à l'aide d'un widget personnalisé?

Widget TextField personnalisé créé P>

class InputScreen extends StatefulWidget {
  static const String id = 'adjustments';

  @override
  _InputScreenState createState() =>
      _InputScreenState();
}

class _InputScreenState
    extends State<InputScreen> {
  final TextEditingController weightController = TextEditingController();
  final TextEditingController heightController = TextEditingController();
  final TextEditingController creatController = TextEditingController();
  final MyUnit heightUnit = MyUnit();
  final MyUnit weightUnit = MyUnit(imperial: 'lbs', metric: 'kg');
  final MyUnit creatUnit = MyUnit(imperial: 'mg/dL', metric: 'mg/dL');
  final MyButton selected = MyButton();

  @override
  void dispose() {
    super.dispose();
    weightController.dispose();
    heightController.dispose();
    creatController.dispose();
    heightUnit.dispose();
    weightUnit.dispose();
    selected.dispose();
  }

  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Color(0xff142651),
      body: Column(
        children: <Widget>[
          AppBar(
            leading: null,
            actions: <Widget>[
              IconButton(
                  icon: Icon(Icons.close),
                  onPressed: () {
                    Navigator.pop(context);
                  }),
            ],
            title: Text('Dose Adjustment'),
            backgroundColor: Colors.transparent,
            elevation: 0.0,
          ),
          ValueListenableBuilder<Option>(
            valueListenable: selectedAbx,
            builder: (context, option, _) => TriButton(
              title1: 'Button 1',
              title2: 'Button 2',
              title3: 'Button 3',
            ),
          ),
          InputRow(
            myUnit: heightUnit,
            inputParameter: 'height',
            textField: heightController,
            colour: kOrangePantone,
          ),
          InputRow(
            myUnit: weightUnit,
            inputParameter: 'weight',
            textField: weightController,
            colour: kRoyalPurple,
          ),
          InputRow(
            myUnit: creatUnit,
            inputParameter: 'SCr',
            textField: creatController,
            colour: kDogwoodRose,
          ),
          RoundedButton(
            title: 'Calculate',
            onPressed: () {
              print(selected.option);
              String inputHeight = heightController.text;
              String inputWeight = weightController.text;
              String inputCreat = creatController.text;

              double imperialHeight = double.parse(inputHeight) * 2.54;
              double metricHeight = double.parse(inputHeight);
              double imperialWeight = double.parse(inputWeight) / 2.2;
              double metricWeight = double.parse(inputWeight);

              double creat = double.parse(inputCreat);

              CalculatorTest calc;
              if (heightUnit.unitType == 'cm' && weightUnit.unitType == 'kg') {
                calc = CalculatorTest(
                    height: metricHeight,
                    weight: metricWeight,
                    creatinine: creat);
              } else if (heightUnit.unitType == 'inches' &&
                  weightUnit.unitType == 'lbs') {
                calc = CalculatorTest(
                    height: imperialHeight,
                    weight: imperialWeight,
                    creatinine: creat);
              } else if (heightUnit.unitType == 'cm' &&
                  weightUnit.unitType == 'lbs') {
                calc = CalculatorTest(
                    height: metricHeight,
                    weight: imperialWeight,
                    creatinine: creat);
              } else {
                heightUnit.unitType == 'inches' && weightUnit.unitType == 'kg';
                calc = CalculatorTest(
                    height: imperialHeight,
                    weight: metricWeight,
                    creatinine: creat);
              }
              ;

              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (context) => ResultsScreen(
                    bmiResult: calc.calculate(),
                  ),
                ),
              );
            },
          ),
        ],
      ),
    );
  }
}


0 commentaires

5 Réponses :


0
votes

Vous devez créer une fonction dans le widget INPUTROW qui saisit les données des champs et les renvoie. Ensuite, lorsque vous créez l'INPUTROW, donnez-lui une clé. Enfin, lorsque vous souhaitez obtenir les valeurs de l'INPUTROWOW, simplement appelez la touche.Yourfunction () et stockez le résultat.

InputRow(
  unit1: 'cm',
  unit2: 'inches',
  inputParameter: 'height',
  key: key,
),


0 commentaires

1
votes

sur votre widget personnalisé Ajoutez le paramètre TextAdittingController pour votre Textfield xxx pré>

sur le widget parent (l'écran appelant les widgets personnalisés) Créer une textAdittingController pour chaque champ de texte que vous souhaitez connaître, ils ont un paramètre texteditingcontroller.text qui vous donne la valeur écrite sur le champ de texte contrôlant p> xxx pré>

avec heightcontroller.text ou poidscontroller.text Vous pouvez voir la valeur partout dans le parent, comme Tant que vous avez la TextEditController, joignez-la au widget Textfield que vous souhaitez voir P>

for fort> p>

Essayez de voir comment une textilitéController fonctionne, vous le verrez Étend un évaluateur de classe qui reconstruit ses auditeurs lorsque la valeur change, vous pouvez créer votre propre comme ceci p> xxx pré>

tout comme TextEditController, il vous suffit de les créer et de les disposer p> xxx pré>

dans INTOPTROW, vous pouvez transmettre cette classe comme si le TextEditController, et maintenant, vous n'avez pas besoin de GI Vez les autres valeurs UNIT1, UNIT2, SYPÉLEMENTUnit car cette logique est maintenant dans la classe MyUnit P>

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'rect_button.dart';
import 'package:pocketpk/constants.dart';

enum Option {
  one,
  two,
  three,
}

class Parent extends StatelessWidget{
  ValueNotifier<Option> myButton = MyButton();

  @override
  Widget build(BuildContext context){
    return ValueListenableBuilder<Option>(
       valueListenable: myButton,
       builder: (context, button, _) => TriButton(
           title1: button.title1, //take the underscores of the names in the MyButton class to make them public
           title2: button.title2,
           title3: button.title3,
           triWidth: BoxConstraints(), //I don't know this value
           onChanged: (newOption) => button.option = newOption,
         )
     );
  }
}

class TriButton extends StatefulWidget {
  TriButton(
      {this.title1, this.title2, this.title3, this.triWidth, this.onChanged});

  final String title1;
  final String title2;
  final String title3;
  final Constraints triWidth;
  ValueChanged<Option> onChanged;

  @override
  _TriButtonState createState() => _TriButtonState();
}

class _TriButtonState extends State<TriButton> {

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        constraints: widget.triWidth,
        child: Row(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Expanded(
              child: RectButton(
                buttonChild: Text(
                  widget.title1,
                  style: TextStyle(color: Colors.white),
                ),
                onPress: () {
                  widget.onChanged(Option.one);
                },
                bgColor: selectedOption == Option.one
                  ? kActiveButtonColor
                  : kInactiveButtonColor,
              ),
            ),
            Expanded(
              child: RectButton(
                buttonChild: Text(
                  widget.title2,
                  style: TextStyle(color: Colors.white),
                ),
                onPress: () {
                  widget.onChanged(Option.two);
                },
                bgColor: selectedOption == Option.two
                  ? kActiveButtonColor
                  : kInactiveButtonColor,
              ),
            ),
            Expanded(
              child: RectButton(
                buttonChild: Text(
                  widget.title3,
                  style: TextStyle(color: Colors.white),
                ),
                onPress: () {
                  widget.onChanged(Option.three);
                },
                bgColor: selectedOption == Option.three
                  ? kActiveButtonColor
                  : kInactiveButtonColor,
              ),
            ),
          ],
        ),
      ),
    );
  }
}


24 commentaires

Edwynzn, merci pour votre aide! C'était la solution dont j'avais besoin. J'ai aussi besoin de dépasser la sélection de la calculatrice. Avez-vous une idée de la façon dont je peux faire cela puisqu'il est passé dans le widget INPUTROW?


J'ai mis à jour ma réponse, je ne sais pas avec quel type de gestion de l'État êtes-vous plus familier, mais dans ce cas simple, copier l'idée de la façon dont une textilitéController fonctionne devrait bien faire


Mec, tu es incroyable! Merci beaucoup! Avez-vous des références recommandées que je pouvais lire pour en savoir plus sur ce genre de choses? Je comprends environ 50% de ce que j'ai appris, mais les 50% d'autres que je n'aurais même jamais pensé. Merci encore!


Pour être une pratique honnête et vérifier les vidéos du type de choses que vous souhaitez mettre en œuvre dans des projets (c'est la meilleure façon d'apprendre). Les documents à flutter pour les widgets sont un excellent outil pour savoir ce qui a été fait et ce que vous pouvez faire à partir de zéro


Edwynzn, merci encore! J'ai une autre demande si cela ne vous dérange pas de continuer à m'aider :). J'essaie d'ajuster un calcul basé sur quelles unités sont sélectionnées (c'est-à-dire si WeighTUnit = 'lbs' la fonction prendrait du poids / 2,2, mais si la perte de poids = "kg", le poids serait utilisé dans le calcul. J'ai essayé d'utiliser les énoncés if / else ainsi que les opérateurs ternaires et ne pouvaient pas le faire fonctionner correctement. Toute pensée? Merci encore pour toute votre aide! J'ai mis à jour mon code ci-dessus pour que vous puissiez tout


Désolé j'ai oublié d'ajouter le code Whei j'ai créé Weightunit et Hightunit, avez-vous créé-le comme ceci: MyUnit Weightunit = MyUnit (Label1: 'kg', label2: 'lb'); Et dans la méthode ONTAP, un double poids = oxydunit.unit == unités.Unit1? double.parse (poidscontroller.text): double.Parse (poidscontroller.text) / 2.2;


J'avais quelque chose près de cela, mais quand j'essaie votre code, la perteUnit.unit n'existe pas. J'ai essayé weightunit.label et cela n'a pas non plus fonctionné. Je continue à obtenir "Opérateur d'égalité == Invocation avec des références de types non liés.


Peut-être que le problème est que j'utilise Hightunit et Weightunit dans l'ONTAP et il y en a un autre dans le widget, vous devriez donc changer de noms ou utilisez cela.Heightunit lors de l'appelant Valelisenner, j'ai mis à jour la partie du code, vérifiez-la et peut-être que cela aide mieux comprendre la logique


Edwynzn, esprit m'aidant à quelque chose de similaire? Maintenant, j'essaie de transmettre le titre d'un bouton à un autre écran. J'ai mis à jour mon code ci-dessus pour inclure mon tributton que j'essaie d'extraire le titre de.


Désolé, j'ai lu votre code mais je ne pouvais pas comprendre où vous mentionnez le valuenotifier, le modifierez-vous en appelant le rappel de valeur? Si vous souhaitez qu'une partie de l'arborescence du widget réagit au changement de la valeur ValelisenAnableBuilder, ce qui me montre peut-être les Claas de votre viseur ou que essayez-vous de changer dans le code avec quelques commentaires


Edwynzn. J'ai mis à jour le code. J'ai essayé de déterminer comment construire le notifiant parce que j'ai plus de deux valeurs, donc je ne peux pas faire un opérateur ternaire. Des idées?


J'ai mis à jour votre code, vous voulez dire passer le titre correspondant à l'option sélectionnée? Passez-vous le viseur à l'écran suivant, puis utilisez-le dans le ValuelisenableBuilder?


Edwynzn c'est mon objectif! J'espère que l'option sélectionnée (alias le titre du bouton sélectionné) et pouvoir transmettre cela à la page qui réside le widget. Je prévois d'éventuellement transmettre ces informations à une autre page pour préformer différentes tâches (c'est-à-dire multiplier par 2 ou diviser par 0,15). Je n'ai pas eu à utiliser le ValuelisenableBuilder car je ne pouvais pas comprendre la pièce notifiant. Maintenant que vous avez aidé à clarifier mon code de notifiant, tout ce que je devais avoir à faire est de remplacer le widget.onchanged (title #) avec les notifications et les envelopper dans un ValelisisenableBuilder, correct?


Je pense que ValueChaseged doit être d'option de type car c'est le type de valeur que le valorisation est, valeur de valeur


Alors, je transmettais le valuenotifier / listableBuilder dans le widget Tributton ou l'écran qui abrite un widget tributton depuis que j'essaie d'informer cet écran du bouton sélectionné dans le widget Tributton? De plus, devrais-je appeler `` `` `widget.onchangned (widget.title1);` `` `` Sous SteState pour chaque bouton ou est-ce où je voudrais utiliser le ValuelisenableBuilder? Ce truc est tellement déroutant pour moi et je n'ai aucune idée de pourquoi. Je pense qu'une fois que je l'obtiens cela, il est mal compris, avoir une bien meilleure compréhension du flux.


Valuenotifier est la classe qui détient la logique, ValuelisenAndicableBuilder est le widget qui écoute la modification de cette classe, puis reconstruit lorsque TEHERE est un widget de changement.onchanged (widget.title1) doit être utilisé pour mettre à jour la valeur du changeur (il n'y a pas de besoin d'instate)


D'accord. Je pense que je suis vraiment proche! Seule une erreur que j'éprouve est que je reçois la fonction de vide "Type d'argumentation" (option) 'ne peut pas être affecté au type de paramètre' Valuelisenable


Le widget parent qui a créé Tributton devrait avoir l'instance de l'évaluateur et lorsque vous créez Tributton Passez-la comme celle-ci dans le constructeur tributton (ONCHANGED: (NewOption) => mybutton.Option = newOption) où myboutton est l'instance du valuenotiner


Je viens toujours la même erreur que mentionnée dans mon précédent commentaire. J'ai mis à jour mon code. J'utilise le code que vous avez posté ci-dessus lorsque j'appelle le tributton sur mon écran. Je ressens également une erreur avec votre code car il disait que le mybutton n'existe pas.


ValueChaged n'est pas un type de valorisation, ne laissez pas le nom vous confondre, c'est ce que l'erreur tente de vous avertir. Vous pouvez utiliser / créer un valoruénotifiant et une valeulisenable avant de créer le tributton dans l'arborescence du widget et de mettre à jour Tributton lorsque Onchanged déclenche une nouvelle valeur d'option, ou vous pouvez enregistrer une classe simple sans notifiant et utiliser le STESTATE comme exemple, la valeur Vestenotifier est plus utile. Lorsque vous essayez de mettre à jour simultanément plusieurs endroits de l'arborescence du widget et que vous ne pouvez pas simplement déclencher l'ensemble de l'ensemble dans différents endroits


Êtes-vous en train de dire que je n'ai pas besoin de construire le Véruelisenable comme il est actuellement? Comme je devrais l'avoir là où il ne met à jour que le titre et non le recttboutton entier? J'ai essayé d'utiliser celui que vous avez précédemment aidé avec un guide, mais je ne vois pas où j'ai créé le valuenotiteur, à l'exception du MyUnit final MyUnit sur l'INTERNOWOW. Lorsque j'essaie de le faire avec MyButton, je reçois une erreur sur mon écran qui dit "la fonction dynamique de type argument (dynamique) ne peut être attribuée au myButton lorsque je passe le Tributton le mis à jour: mybutton: (newoption) => mybutton.option = NewOption. Désolé je suis tellement confus :(


YOUTU.BE/S-ZG-JS5QHQ Vérifiez l'exemple de la vidéo, vous verrez qu'ils l'utilisent Quand il y a beaucoup d'endroits pour changer la même valeur, peut-être que si vous créez un gist ou une autre question avec un code complet plus propre, je peux vous aider, en ce moment, il y en a beaucoup dans ce que je suis aussi confus que vous essayiez. atteindre


Merci pour le lien! J'ai effectivement pris des notes sur cette vidéo et d'autres mais toujours confus. Je viens de jouer avec mon code et je l'ai eu pour travailler sans erreur! Le seul problème est que j'essaie d'imprimer le titre du bouton sélectionné, je reçois uniquement "mybutton # 66f66 (option.one)" malgré ce qui est sélectionné. Je pense que cela a quelque chose à voir avec la classe Mybutton. Cela vous dérange-t-il de l'examiner rapidement et de voir si vous remarquez quelque chose de congé? Sinon, je vais continuer à jouer avec le code et peut-être recourir à la création d'un glist ou d'une question. Merci encore pour tout!


Code mis à jour. J'ai aussi essayé d'expliquer et de montrer exactement ce que je veux et ce qui se passe actuellement lorsque j'utilise le widget tributton



1
votes

rond 3 strong>

Vous l'avez presque compris, le problème est ici p> xxx pré>

valeur de valeur code> vous aviez était préférable de changer le notifiant p> xxx pré>

et maintenant dans le tributton p> xxx pré>

et dans le parent ( introuvable CODE>) Modifiez le valuénotificateur pour ajouter ces paramètres P>

CupertinoSegmentedControl<int>(
    children: genereatedButtons, //or the other map buttons
    groupValue: keySelected,
    onValueChanged: (index) => setState(() => keySelected = index), 
),


2 commentaires

Omg merci beaucoup! Sérieusement, vous m'avez tellement aidé et vos explications sont incroyables. Merci merci merci!


Edwynzn, désolé je suis de retour :(. J'ai essayé de comprendre un moyen de transmettre le titre du bouton sélectionné sur mon modèle de calculatrice, puis utilisez ces informations pour effectuer un calcul différent (c'est-à-dire si «mâle» se multiplie par 1, mais si «Femme» se multiplier de 0,85). La seule chose à travailler consiste à le réaliser sur mon écran d'entrée et à le transmettre à la calculatrice comme une entrée, qui est répétitive et qui l'encombre, utilisez ce code plusieurs fois. Ive essayé d'utiliser l'avenir, ASYNC, et attend de fonctionnement fonctionnellement mais continue à obtenir 'instance de future ' comme mon résultat. Toute pensée? J'ai posté mon code ci-dessous.



0
votes

Écran d'entrée xxx

calculatrice xxx

résultats Écran xxx


2 commentaires

Désolé, je ne pouvais pas comprendre votre problème, mais cela semble que vous preniez plus de lutter avec DART Logic que de l'UI Flutter, vous avez dit que vous avez essayé d'utiliser d'avenir, mais toutes vos valeurs sont synchronisées (vous les avez déjà?) Et vous ne pouvez pas faire les maths dans votre Modèle de calculatrice mais vous pouvez le faire dans un constructeur ou un constructeur d'usine autant que je comprends bien, voulez-vous passer le modèle à l'écran de résultat pour le montrer ou vouloir changer de choses là-bas?


Laissez-moi essayer d'expliquer à nouveau. Disons que je choisis le bouton "mâle". J'espère passer "Homme" au modèle de calculatrice pour exécuter une commande (c'est-à-dire si (Gender == "mâle") {Retour Poids * 1.2} else {Retour Poids}). De cette façon, je peux effectuer toutes mes mathématiques, j'aimerais que l'application fasse sur le modèle de calculatrice et je peux la transmettre à ma page de résultats. Actuellement, je ne peux pas comprendre comment attendre que les titres de boutons soient transmis à la calculatrice. En conséquence, malgré la sélection de «homme» dans mon exemple ci-dessus, je reçois actuellement les sorties de l'autaire (dans ce cas de poids de retour). Cela a-t-il du sens?



0
votes
import 'package:flutter/material.dart';

class Calculator {
  Calculator({
    this.height,
    this.weight,
    this.creatinine,
    this.age,
    this.genderMultiplier,
    this.ideal,
    this.adjust,
  });

  double height;
  double weight;
  double creatinine;
  double age;
  double genderMultiplier;
  double ideal;
  double adjust;
  String heightUnit;

  double _crcl;
  double _idealCrCL;
  double _adjustCrCL;
  
  factory Calculator.idealCalculate({
      double height,
      double weight,
      double creatinine,
      double age,
      bool isFemale = true,
      bool isMetricHeight = true,
      bool isMetricWeight = true,
    }){
    double myHeight = isMetricHeight ? height : height * 2.54;
    double myWeight = isMetricWeight ? weight : weight / 2.2;
    double imperialHeight = isMetricHeight ? myHeight / 2.54 : height;
    double multiplier;
    double idealWeight;
    double adjustWeight;
    if(isFemale){
      multiplier = 0.85;
      idealWeight = 45 + 2.3 * (imperialHeight - 60);
    }
    else{
      multiplier = 1.0;
      idealWeight = 50 + 2.3 * (imperialHeight - 60);
    }
    adjustWeight = (myWeight - idealWeight) * 0.4 + idealWeight;
    return Calculator(
      height: myHeight,
      weight: myWeight,
      creatinine: creatinine,
      age: age,
      genderMultiplier: multiplier,
      ideal: idealWeight,
      adjust: adjustWeight,
    );
  }
  
  
  set idealWeight(String title) {
    bool isFemale = title == 'Female';
    double imperialHeight = heightUnit == 'cm' ? height / 2.54 : height;
    if(isFemale){
      genderMultiplier = 0.85;
      ideal = 45 + 2.3 * (imperialHeight - 60);
    }
    else{
      genderMultiplier = 1.0;
      ideal = 50 + 2.3 * (imperialHeight - 60);
    }
    adjust = (weight - ideal) * 0.4 + ideal;
  }


  String calculate() {
    _crcl = (((140 - age) * weight) / (72 * creatinine)) * genderMultiplier;
    return _crcl.toStringAsFixed(1);
  }

  String calculateIdeal() {
    _idealCrCL = (((140 - age) * ideal) / (72 * creatinine)) * genderMultiplier;
    return _idealCrCL.toStringAsFixed(1);
  }

  String calculateAdjust() {
    _adjustCrCL = weight / ideal >= 1.4
        ? (((140 - age) * adjust) / (72 * creatinine)) * genderMultiplier
        : _idealCrCL;
    return _adjustCrCL.toStringAsFixed(1);
  }
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: MyWidget(),
        ),
      ),
    );
  }
}

class MyWidget extends StatelessWidget {
  
  final Calculator calc = Calculator.idealCalculate(
    age: 24,
    creatinine: 152,
    height: 162,
    weight: 64
  );
  
  
  @override
  Widget build(BuildContext context) {
    return Text(calc.calculate(), style: Theme.of(context).textTheme.headline4);
  }
}

12 commentaires

Je dois créer une classe de constructeur par défaut pour l'usine, corriger? Dans cette classe par défaut, j'ai également besoin de répertorier tous les paramètres également? (C'est-à-dire la calculatrice ({hauteur, poids, âge, etc.);) Merci encore pour toute votre aide!


Ouais, comme votre exemple de classe Calculatrice, je viens d'ajouter le constructeur d'usine


Comment faire appel à appeler le calcul? Actuellement, je reçois une erreur avec la manière dont le code est configuré en disant "La méthode" Calculer "n'est pas définie pour la classe" Calculatrice "" si je crée ma chaîne Calculez () fonction de mon écran de calculateur que je ne reçois pas Cette erreur mais cela ne peut pas accéder aux paramètres à l'intérieur de l'usine.


Les autres méthodes ne peuvent pas accéder au paramètre à l'intérieur de l'usine, une usine vous aide à contrôler ce dont vous avez besoin dans l'objet (calculatrice dans ce cas), faites une certaine logique, puis prévoit de retourner cet objet, les méthodes à l'intérieur de votre classe de calculatrice ne doivent fonctionner qu'avec. Le paramètre que vous passez et l'interne de la classe de calculatrice, que voulez-vous faire exactement changer dans votre méthode de calcul?


Je ne veux pas changer quoi que ce soit dans ma méthode, mais pour pouvoir appeler la calculatrice sur mon écran d'entrée et exécuter la logique pour obtenir la valeur idéaleCalculer. Actuellement, je reçois la méthode d'erreur ci-dessus car elle dit que je n'ai pas de calculer défini dans ma classe de calculatrice. C'est pourquoi j'essayais de créer le calcul de la chaîne () afin que je puisse appeler cela sur mon écran d'entrée mais que je n'ai pas pu accéder aux paramètres de la calculatrice d'où ma confusion


C'est bizarre, j'ai couru la méthode de calcul de votre classe juste bien après avoir défini le var calc


Peut-être que je manque quelque chose mais sur le résultat: calc.caluler (), 'sur l'écran d'entrée, je ne peux pas trouver où le calcul est défini. Est-il manquant du code que vous avez couru aussi?


ouais qui fait partie de votre code du modèle de calculatrice, je ne déplace pas cette partie


Je viens de mettre à jour mon code de calculatrice. Pourriez-vous l'examiner et dites-moi ce que je suis en train de gâcher? J'ai essayé de le manipuler mais j'ai eu aucune chance. Actuellement, le calcul de la chaîne (), Calculylidideal () et CalculaeadJust () ne peuvent pas accéder aux paramètres de mon constructeur de calculatrice au plus haut


J'ai exécuté un exemple avec des données aléatoires pour la calculatrice et pourriez utiliser la méthode de calcul sans préférence, je ne comprends toujours pas ce qui se passe, êtes-vous sûr que vous vous référez correctement à la méthode


EDWYNZN, j'ai trouvé que mon erreur était avec la syntaxe! Ce code fonctionne bien! Merci beaucoup. J'ai une question après avoir étudié sur des usines. Pourquoi dois-je faire le "Set Ideal poids lourd (titre de chaîne)"? N'est-ce pas déjà spécifié comme un paramètre pour l'usine?


C'était plus un exemple de la manière d'utiliser des setters pour modifier la variable interne selon une modification, dans ce cas lorsque vous modifiez le sexe femelle et les hommes des équations et des variables changent, vous n'avez donc pas besoin de créer un autre modèle de calculatrice.