https://zuma-lab.com/posts/flutter-nested-list
こちらのサイトを参考にカルーセルデザインの実装をしようとしています。
こちらで表示ラベルには WordPair.random().asPascalCase でランダムな英単語を生成して表示しています。
今回は表示ラベルを例えば「犬」「猫」「その他」などと指定したいのですがどのように実装すればいいかで詰まっています。
よろしくお願いします
Dart
1import 'package:flutter/material.dart'; 2import 'package:english_words/english_words.dart'; 3 4class NestedListScreen extends StatelessWidget { 5 6 Widget build(BuildContext context) { 7 return MaterialApp( 8 theme: ThemeData(primaryColor: Colors.white), 9 home: NestedList(), 10 ); 11 } 12} 13 14class NestedList extends StatelessWidget { 15 16 Widget build(BuildContext context) { 17 return Scaffold( 18 appBar: AppBar( 19 title: const Text('Nested List'), 20 ), 21 body: ListView.builder( 22 padding: const EdgeInsets.symmetric(vertical: 16), 23 itemBuilder: _buildVerticalItem, 24 ), 25 ); 26 } 27 28 Widget _buildVerticalItem(BuildContext context, int verticalIndex) { 29 return Padding( 30 padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), 31 child: SizedBox( 32 height: 320, 33 child: Column( 34 mainAxisAlignment: MainAxisAlignment.spaceEvenly, 35 crossAxisAlignment: CrossAxisAlignment.start, 36 children: [ 37 Text( 38 WordPair.random().asPascalCase, 39 style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold), 40 ), 41 Text( 42 WordPair.random().asPascalCase, 43 style: const TextStyle(fontSize: 16, color: Colors.grey), 44 ), 45 _buildHorizontalItem(context, verticalIndex), 46 ], 47 ), 48 ), 49 ); 50 } 51 52 Widget _buildHorizontalItem(BuildContext context, int verticalIndex) { 53 return SizedBox( 54 height: 240, 55 child: PageView.builder( 56 controller: PageController(viewportFraction: 0.8), 57 itemBuilder: (context, horizontalIndex) => 58 _buildHorizontalView(context, verticalIndex, horizontalIndex), 59 ), 60 ); 61 } 62 63 Widget _buildHorizontalView( 64 BuildContext context, int verticalIndex, int horizontalIndex) { 65 final imageUrl = 66 'https://source.unsplash.com/random/275x240?sig=$verticalIndex$horizontalIndex'; 67 return Padding( 68 padding: const EdgeInsets.symmetric(horizontal: 8), 69 child: Card( 70 child: Image.network(imageUrl), 71 ), 72 ); 73 } 74}
あなたの回答
tips
プレビュー