Flutter, как преобразовать большой виджет с отслеживанием состояния в более мелкие - PullRequest
0 голосов
/ 11 июля 2020

Я пишу приложение с одним очень большим виджетом с отслеживанием состояния. Оно состоит из трех основных разделов пользовательского интерфейса, поэтому я хочу, чтобы оно было преобразовано в 3 разных виджета. Однако каждый из трех виджетов имеет общую переменную selectedColor, которая изменяет цвет всех трех виджетов. VS Code не позволит мне провести рефакторинг виджетов, потому что они устанавливаютState, поэтому он просто выдаст ошибку, если я попытаюсь установить состояние. В основном, если весь код представляет собой один большой кусок, это нормально, но как я могу преобразовать свой код в 3 виджета, имея возможность установить цвета всех трех? Спасибо - Джозеф

1 Ответ

0 голосов
/ 11 июля 2020

Создайте метод в каждом из отдельных виджетов, который устанавливает состояние соответствующего виджета. Затем создайте объекты виджетов в основном классе, добавьте в пользовательский интерфейс и вызовите методы оттуда.

class Mainclass extends StatelessWidget{
widget1 obj = new widget1();
..
..

Widget build(BuildContext context){

return obj;

}


void setstate(){
obj.set();
}

И тогда код widget1 должен выглядеть примерно так:

class widget1 extends StatefulWidget{

widget1State st = new widget1State();

void set(){
  st.setSt();
}
State<StatefulWidget> createState() => st;

}

class widget1State extends State<widget1>{

void setSt(){
setState((){

});
}
..
..
}


        
        
...