элементы в RowBuilder если большое количество то начинает тормозить, как это исправить?
использую кастомный Row с builder:
import 'package:flutter/material.dart';
class RowBuilder extends StatelessWidget {
final IndexedWidgetBuilder itemBuilder;
final MainAxisAlignment mainAxisAlignment;
final MainAxisSize mainAxisSize;
final CrossAxisAlignment crossAxisAlignment;
final TextDirection textDirection;
final VerticalDirection verticalDirection;
final int itemCount;
const RowBuilder({
Key key,
@required this.itemBuilder,
@required this.itemCount,
this.mainAxisAlignment: MainAxisAlignment.start,
this.mainAxisSize: MainAxisSize.max,
this.crossAxisAlignment: CrossAxisAlignment.center,
this.textDirection,
this.verticalDirection: VerticalDirection.down,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return new Row(
mainAxisAlignment: mainAxisAlignment,
children: new List.generate(
this.itemCount, (index) => this.itemBuilder(context, index)).toList(),
);
}
}
для дальнейшего использования внутри SingleChildCcrollView или Expanded(мне нужно прописать на подобии ListView.builder но без возможности прокрутки и чтобы все элементы поместились внутри родительского виджета) в приложении:
RowBuilder(
itemCount: list.length,
itemBuilder: (context, index){
return Text('Text: ${index}');
})
но при большом объеме элементов начинает тормозить приложение, как можно это исправить?
Ответы (1 шт):
Автор решения: MiT
→ Ссылка
А такой способ чем вам не подошел?
ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 10000,
itemBuilder: (context, index) {
return Text('Text: $index');
},
),
Не уверен что, что-то поменялось:
class RowBuilder extends StatelessWidget {
final IndexedWidgetBuilder itemBuilder;
final MainAxisAlignment mainAxisAlignment;
final MainAxisSize mainAxisSize;
final CrossAxisAlignment crossAxisAlignment;
final TextDirection textDirection;
final VerticalDirection verticalDirection;
final int itemCount;
const RowBuilder({
Key key,
@required this.itemBuilder,
@required this.itemCount,
this.mainAxisAlignment: MainAxisAlignment.start,
this.mainAxisSize: MainAxisSize.max,
this.crossAxisAlignment: CrossAxisAlignment.center,
this.textDirection,
this.verticalDirection: VerticalDirection.down,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return new Row(
mainAxisAlignment: mainAxisAlignment,
children: [
for (int i = 0; i < this.itemCount; i++) this.itemBuilder(context, i),
],
);
}
}