如何解决如何根据 list.lenght 限制小部件生成
我在女巫中有这个 PageView.bulder,我将 _buildQuestionWidgets 作为页面返回,在那里我每页生成 3 个新小部件。 那些小部件只是从 question[] 列表中保存一些文本。
PageView.builder(
controller: _pageController,onPageChanged: _onPageChanged,itemCount:
(questions.length / _numEntriesPerPage).ceil(),itemBuilder: (BuildContext context,int pageIndex) {
return _buildQuestionWidgets(pageIndex);
},),
Widget _buildQuestionWidgets(pageIndex) {
indexBaseline = pageIndex * _numEntriesPerPage;
return Padding(
padding: const EdgeInsets.all(3.0),child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [
for (var i = 0; i < _numEntriesPerPage && i < questions.length; i++)
_question(indexBaseline! + i)
],);
}
现在,问题是,如果问题的数量不能被 3 整除,我将超出范围异常。 例如,如果有 44 个问题,我将毫无问题地滚动到第 14 页,但在第 15 页上,我将收到异常,因为小部件期望还有 3 个 q 并且只得到 2 个。所以我是否检查 null 并隐藏该小部件,或者有更好的处理这个的方式?
Widget _question(indexBaseline) {
return
child: Container(
child: Padding(
padding: const EdgeInsets.all(8.0),child: Column(
children: [
RichText(
maxLines: 1,text: TextSpan(
style: DefaultTextStyle.of(context).style,children: [
TextSpan(
text: questions.length > indexBaseline
? questions[indexBaseline].user.userName
: 'No ',style: TextStyle(
fontSize: 14,fontWeight: FontWeight.bold)),TextSpan(
text: questions.length > indexBaseline
? " asked "
: 'more '),TextSpan(
text: questions.length > indexBaseline
? _timeAgo(indexBaseline)
: 'Questions'),])),Text(_questionCharLenght(
128,questions.length > indexBaseline
? questions[indexBaseline].title
: '')
),],));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。