Skip to content

Instantly share code, notes, and snippets.

@plateaukao
Created March 8, 2020 09:02
Show Gist options
  • Save plateaukao/a7505c42499900f1727d6d46d8165a2c to your computer and use it in GitHub Desktop.
Save plateaukao/a7505c42499900f1727d6d46d8165a2c to your computer and use it in GitHub Desktop.
Widget buildVocabList() =>
FutureBuilder<List<VocabData>>(
future: getVocabDataList(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return Container();
}
final vocabList = snapshot.data;
return (isListViewMode) ? buildListView(vocabList) : buildPageView(vocabList);
},
);
Widget buildListView(vocabList) {
return ListView.builder(
controller: _scrollController,
itemCount: vocabList.length,
itemBuilder: (context, index) {
final vocabData = vocabList[index];
return GestureDetector(
onLongPress: () => _toPageView(index),
child: VocabWidget(vocabData, VocabViewMode.Row)
);
},
);
}
// infinite page view
Widget buildPageView(vocabList) {
List<Widget> pages = [ for (final v in vocabList) VocabWidget(v, VocabViewMode.Page) ];
return PageView.builder(
controller: PageController(initialPage: currentItem),
itemBuilder: (_, int index) => pages[index % pages.length]
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment