/
main.dart
72 lines (65 loc) · 1.72 KB
/
main.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'filled.dart';
import 'outlined.dart';
void main() {
runApp(App());
}
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Flutter Demo',
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage();
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 2,
child: Scaffold(
appBar: AppBar(
title: const Text('Ant Design Icons'),
bottom: const PreferredSize(
preferredSize: Size.fromHeight(34),
child: TabBar(
labelPadding: EdgeInsets.symmetric(vertical: 8),
tabs: [Text('Filled'), Text('Outlined')],
),
),
),
body: const TabBarView(children: [
GridIcons(filledIcons),
GridIcons(outlinedIcons),
]),
),
);
}
}
class GridIcons extends StatelessWidget {
final List icons;
const GridIcons(this.icons);
@override
Widget build(BuildContext context) {
final gridCount = MediaQuery.of(context).size.width ~/ 150;
return GridView.builder(
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: gridCount),
itemBuilder: (_, i) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(icons[i][0] as IconData, size: 50),
const SizedBox(height: 16),
Text(icons[i][1] as String,
style: Theme.of(context).textTheme.caption),
],
);
},
itemCount: icons.length,
);
}
}