радиовалюта флаттера не меняется

Это может быть спорным, но «включенные всегда и иногда расширяются» - это очень распространенное заблуждение, которое почти сейчас считается де-факто. Вот правильный подход (на мой взгляд, и проверенный против Якобсона, Фаулера, Лармена и еще 10 других ссылок).

Отношения являются зависимостями

Ключ для включения и расширения отношений с использованием case чтобы понять, что, общий с остальной частью UML, пунктирная стрелка между вариантами использования - это зависимость.

include

Базовый вариант использования зависит от включенного использования. случай (ы); без него / их базовый вариант использования является неполным, так как включенные варианты использования представляют собой подпоследовательности взаимодействия, которые могут происходить всегда ИЛИ иногда. (Это противоречит популярному заблуждению об этом, то, что предлагает ваш случай использования, всегда происходит в основном сценарии, а иногда происходит в альтернативных потоках, просто зависит от того, что вы выбираете в качестве основного сценария, случаи использования можно легко перестроить, чтобы представлять другой поток как основной сценарий, и это не имеет значения).

В наилучшей практике зависимости от одного метода базовый прецедент знает о (и ссылается) на включенный прецедент, но включенный прецедент не должен «знать» о базовом варианте использования. Вот почему включенные варианты использования могут быть: а) базовыми вариантами использования в их собственном праве и b) разделены несколькими базовыми вариантами использования.

extend

Расширяющийся вариант использования в зависимости от базового варианта использования; это буквально расширяет поведение, описанное базовым вариантом использования. Базовый прецедент должен быть полностью функциональным вариантом использования («включено», конечно же, без дополнительной функциональности дополнительного расширения).

Расширение использования может быть использовано в нескольких ситуациях:

  1. Основной пример использования представляет собой «должен иметь» функциональность проекта, в то время как расширяющийся вариант использования представляет собой необязательный (должен / can / want). В этом случае термин необязательный является необязательным: необязательно ли строить / доставлять, а не необязательно, иногда ли он выполняется как часть последовательности базового использования.
  2. В фазе 1 вы можете доставить базовый прецедент, который встречается требования к этому моменту, а этап 2 добавит дополнительную функциональность, описанную в распространенном случае использования. Это может содержать последовательности, которые всегда или иногда выполняются после доставки фазы 2 (опять-таки вопреки распространенному заблуждению).
  3. Его можно использовать для извлечения подпоследовательностей базового варианта использования, особенно когда они представляют собой «исключительные «сложное поведение с его собственными альтернативными потоками.

Важным аспектом, который следует учитывать, является то, что расширяющийся вариант использования может «вставлять» поведение в несколько мест в потоке базового использования, а не только в одном месте в качестве включенного варианта использования. По этой причине весьма маловероятно, что расширенный вариант использования будет подходящим для расширения более чем одного базового варианта использования.

Что касается зависимости, расширяемый вариант использования зависит от базового варианта использования и снова односторонняя зависимость, то есть базовый прецедент не нуждается в какой-либо ссылке на расширяющийся вариант использования в последовательности. Это не означает, что вы не можете продемонстрировать точки расширения или добавить x-ref в расширяющийся вариант использования в другом месте шаблона, но базовый вариант использования должен работать без расширения.

РЕЗЮМЕ

Надеюсь, я показал, что распространенное заблуждение «включений всегда, иногда продолжается», либо неверно, либо в лучшем случае упрощено. Эта версия на самом деле имеет больше смысла, если вы рассматриваете все вопросы о направленности стрелок, которые представляет собой неправильное представление, - в правильной модели это просто зависимость и не может измениться, если вы реорганизуете содержимое прецедента.

0
задан Alaric James Hartsock 2 March 2019 в 09:46
поделиться

1 ответ

Проблема в том, что вы определили свою переменную subscriberValue в своем методе build. Вы используете setState вызовы, которые вызывают метод build, и при каждом отзыве build вы теряете значение subscriberValue. Я советую вам всегда использовать переменные, которые будут контролировать состояние вашего виджета в качестве членов класса.

class _SignUpState extends State<SignUp> {

  // HAS TO BE CLASS MEMBER AND IT'S GOOD AN INITIAL VALUE TOO..
  int subscriberValue =1; // asuming that  1 is default radio button option 

  @override
  Widget build(BuildContext context) {
    //... some codes ...
    //int subscriberValue; REMOVE THIS LINE. YOU'RE LOSING THE VALUE IN EVERY setState call

    //You can define this method outside from build too.
    void switchSubscriber(int value) {
      setState(() {
        subscriberValue = value;
      });
    }
}
0
ответ дан Marcos Boaventura 2 March 2019 в 09:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: