#flutter #dart
#flutter #dart
Вопрос:
я сталкиваюсь с проблемой с просмотром страниц и Futurebuild, которая заключается в том, что каждый раз, когда я переключаюсь между первой страницей и второй страницей, страница будет перестроена again…it вызовет новые данные из API, даже если там нет ничего нового … любой может мне помочь в этом
class Home extends StatefulWidget {
const Home({Key key}) : super(key: key);
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
PageController pageController = PageController(keepPage: false);
@override
void initState() {
super.initState();
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
final homePage = HomeProjects(pageController: pageController);
final portfolioPage = Portfolio(pageController: pageController);
return Scaffold(
body: ScrollConfiguration(
behavior: MyBehavior(),
child: PageView(reverse: true, controller: pageController,
//physics: NeverScrollableScrollPhysics(),
children: [
homePage,
portfolioPage,
]),
),
);
}
}
Ответ №1:
Если вы выполняете HTTP-вызовы только внутри своих страниц, это желаемый результат. Вам нужно будет кэшировать ответы, чтобы избежать повторных сетевых вызовов.
Перенос вызовов api на initState
— это не то, что я бы лично сделал — данные, полученные при создании первой страницы, могут устареть без вашего ведома.
Ответ №2:
Ну, вы создаете свои страницы каждый раз, когда вызывается build.
Если вы этого не хотите, переместите строки, которые фактически создают страницы, во время и место, где они будут вызваны только один раз. initState
может быть хорошим местом.
Комментарии:
1. пробовал это, но безуспешно, я переместил эту строку в initstate (), домашняя страница = HomeProjects(PageController: PageController); …. но безуспешно