#flutter #dart
Вопрос:
Я действительно новичок в флаттере, я не знаю, безумие это или нет, но, надеюсь, я смогу это сделать.
Я создал StatefulWidget
имя LayOut
, и оно устроено так:
Я расскажу обо всем этом по ссылке здесь: здесь
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: [
Container(), **//Irrelevant code**
SafeArea(child: Container()), **//Irrelevant code**
TweenAnimationBuilder(
tween: Tween<double>(begin: 0, end: value),
duration: Duration(milliseconds: 200),
curve: Curves.easeInExpo,
builder: (_, double val, __) {
return (Transform(
alignment: Alignment.center,
transform: Matrix4.identity()
..setEntry(3, 2, 0.001)
..setEntry(0, 3, 200 * val)
..rotateY((pi / 6) * val),
child: chilWidget));
}),
GestureDetector() **//Irrelevant code**
],
),
);
}
И это будет выглядеть так:
И вот как я использую его для других file.dart
файлов:
@override
Widget build(BuildContext context) {
return LayOut( //I use here
Scaffold(
appBar: AppBar(
title: Text("Favorites Page"),
centerTitle: true,
),
body: Text('Thanks you!'),
),
);
}
Хотя он все еще может работать нормально без какого-либо предупреждения, в настоящее время я сталкиваюсь с несколькими проблемами, когда LayOut
он используется. Во-первых , когда я использую DropDownFormField
, выбранное значение не может отображаться на экране, даже если оно было выбрано и добавлено в Firestore. Во-вторых, когда я выполняю поиск, значение также не может отображаться на экране.
Я попробовал сделать паузу LayOut
, и все работает правильно.
Является ли это конфликтом между Scaffolds
ними ? Как я могу использовать это LayOut
для других страниц?
Ответ №1:
Вы можете сделать это, как показано в следующем коде. Внесите свои имена на экране в список. Этот пример-нижняя панель навигации. Но та же логика применима и к боковой навигации.
int _page = 0;
final screens = [
ScreenOne(),
ScreenTwo(),
ScreenThree(),
ScreenFour(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
bottomNavigationBar: CurvedNavigationBar(
index: 0,
items: [
Icon(
FontAwesomeIcons.home,
color: Colors.white,
),
Icon(
FontAwesomeIcons.plus,
color: Colors.white,
),
Icon(
FontAwesomeIcons.calendarAlt,
color: Colors.white,
),
Icon(
FontAwesomeIcons.userAlt,
color: Colors.white,
),
],
onTap: (index) {
setState(() {
_page = index;
});
},
body: screens[_page]
),
}