Взаимодействие флаттера с изменением памяти - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь понять, как ведет себя трепетный виджет, заполняемый элементом памяти, когда изменяется базовый элемент памяти. Мой пример использования таков: при срабатывании какого-либо события (используя пакет EventBus) этот базовый элемент памяти может измениться или не измениться . Если это так, то я хотел бы вызвать setState (), но не иначе, поскольку я не хотел бы без необходимости вызывать его. Пожалуйста, помогите мне, как я могу достичь этого. В настоящее время onclick меняет str, но виджет Text не меняется. Мой пример - нажатие кнопки (действует как триггер события) изменяет базовый элемент str, который заполняет элемент Text. Заранее спасибо.

  class _MainApp extends State<MainApp>{
  @override
  String str = "1";
  Widget build(BuildContext context){
    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: <Widget>[
            CustomText(),
            RaisedButton(onPressed: (){
            print(CustomTextS.str);
            CustomTextS.setStr("f");
            print(CustomTextS.str);

          },)
          ],

        ),
      ),
    );
  }
}

class CustomText extends StatefulWidget{
  CustomTextS createState() => CustomTextS();
}
class CustomTextS extends State<CustomText>{
  static String str = "1";

  static setStr(String a){
    str = a;
  }
  Widget build(BuildContext context){
    return Text(str);
  }
}

1 Ответ

0 голосов
/ 13 февраля 2020

В настоящее время я начал использовать тот факт, что строки и целые числа передаются по значению. Таким образом, этот факт можно использовать для эффективного получения копии, которую можно использовать для сравнения с обновленным значением, чтобы определить, изменились ли свойства действия виджета в событии события или нет.

...