Ric*_*ick 8 dart flutter flutter-layout
我对颤振很陌生,我正在尝试学习如何创建视图。我试图创建一个单独的视图文件或小部件,如果它是在颤振中调用的,并且只需从 main.dart 调用它。
我有一个包含此代码的单独小部件
class PageEntryWidgetMain extends StatefulWidget {
final PageViewEntryMain pageViewEntryMain;
const PageEntryWidgetMain({Key key, this.pageViewEntryMain})
: super(key: key);
@override
State<StatefulWidget> createState() {
return _PageEntryWidgetMainState();
}
}
class _PageEntryWidgetMainState extends State<PageEntryWidgetMain> {
@override
Widget build(BuildContext context) {
return Container(
child: Row(
children: <Widget>[
Text(widget.pageViewEntryMain.title)
],
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用带有以下代码的视图寻呼机来显示它
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
PageView.builder(
itemBuilder: (context, position) {
PageEntryWidgetMain(
pageViewEntryMain: pages[position],
);
},
itemCount: pages.length,
scrollDirection: Axis.horizontal,
)
],
),
),
);
Run Code Online (Sandbox Code Playgroud)
但它给了我以下错误
我对它实际抱怨的内容有些困惑。通过用此代码替换 PageView.builder,我可以只显示一个视图
PageEntryWidgetMain(pageViewEntryMain: pages[0])
Run Code Online (Sandbox Code Playgroud)
所以我相信单独的小部件本身没有问题。这可能是关于我如何尝试使用给我错误的 ViewPager。
我一直在寻找 PageView 实现,但我还没有看到一个实际上有一个单独的视图来调用显示的实现。我需要以这种方式学习它,这样我才能将视图分开,而不仅仅是将它们全部写在一个文件中。
gre*_*ora 19
PageView不能是 的直接子代Column。更改您的列以在Expanded两者之间添加一个,如下所示:
Column(
children: <Widget>[
Expanded(
child: PageView.builder(),
),
]
)
Run Code Online (Sandbox Code Playgroud)
为了解释这里发生的事情,Column有一个无限的水平宽度,即它会继续水平扩展以占用它孩子需要的尽可能多的空间。PageView(和任何其他水平滚动小部件)需要水平约束才能使滚动逻辑工作。
ExpandedPageView通过占用尽可能多的空间来限制 的水平尺寸,这应该可以解决问题。
小智 6
您可以使用任何具有固定高度和宽度的Widget来包装 PageView。
例如,我使用Container():
Column(
children: <Widget>[
Container(
width: double.infinity,
height: 100.0,
child: PageView.builder(),
),
]
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7439 次 |
| 最近记录: |