main_page.dart 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import 'package:eye_video/bizmodule/blocs.dart';
  2. import 'package:eye_video/bizmodule/main/category/category_page.dart';
  3. import 'package:eye_video/bizmodule/main/category/repositories/mock/mock_category_repository.dart';
  4. import 'package:eye_video/bizmodule/main/community/blocs/community_bloc.dart';
  5. import 'package:eye_video/bizmodule/main/community/community_page.dart';
  6. import 'package:eye_video/bizmodule/main/community/respositories/mock/mock_community_repository.dart';
  7. import 'package:eye_video/bizmodule/main/discovery/blocs/discovery_bloc.dart';
  8. import 'package:eye_video/bizmodule/main/discovery/discovery_page.dart';
  9. import 'package:eye_video/bizmodule/main/discovery/respositories/mock/mock_discovery_repository.dart';
  10. import 'package:eye_video/bizmodule/main/selections/blocs/ugc/ugc_bloc.dart';
  11. import 'package:eye_video/bizmodule/main/selections/respositories/mock/mock_ugc_repository.dart';
  12. import 'package:eye_video/bizmodule/main/selections/ugc_page.dart';
  13. import 'package:eye_video/bizmodule/main/thiz/blocs/main_bloc.dart';
  14. import 'package:eye_video/bizmodule/main/thiz/repositories/mock/mock_main_repository.dart';
  15. import 'package:eye_video/bizmodule/main/thiz/widgets/drawer_widget.dart';
  16. import 'package:eye_video/framework/extension/screen_ruler.dart';
  17. import 'package:eye_video/framework/extension/size_extension.dart';
  18. import 'package:flutter/material.dart';
  19. import 'package:flutter_bloc/flutter_bloc.dart';
  20. /// Description: 首页
  21. /// Time : 06/30/2022 Thursday
  22. /// Author : liuyuqi.gov@msn.cn
  23. class MainPage extends StatelessWidget {
  24. MainPage({Key? key, required this.title}) : super(key: key);
  25. final String title;
  26. @override
  27. Widget build(BuildContext context) {
  28. ScreenRuler.init(context);
  29. var tabs = ['精选', '发现', '分类', '社区'];
  30. return DefaultTabController(
  31. length: tabs.length,
  32. child: Scaffold(
  33. appBar: AppBar(
  34. title: buildTabBar(tabs),
  35. elevation: 2.0,
  36. actions: [
  37. Icon(Icons.search),
  38. ],
  39. ),
  40. drawer: BlocProvider(
  41. create: (ctx) => MainBloc(mainRepository: MockMainRepository()),
  42. child: DrawerWidget(),
  43. ),
  44. body: TabBarView(
  45. children: tabs.map((tab) {
  46. var index = tabs.indexOf(tab);
  47. switch (index) {
  48. case 0:
  49. {
  50. return BlocProvider(
  51. create: (context) =>
  52. UgcBloc(ugcRepository: MockUgcRepository()),
  53. child: UgcPage(),
  54. );
  55. }
  56. case 1:
  57. {
  58. return BlocProvider(
  59. create: (context) => DiscoveryBloc(
  60. discoveryRepository: MockDiscoveryRepository()),
  61. child: DiscoveryPage(),
  62. );
  63. }
  64. case 2:
  65. {
  66. return BlocProvider(
  67. create: (context) => CategoryBloc(
  68. categoryRepository: MockCategoryRepository()),
  69. child: CategoryPage(),
  70. );
  71. }
  72. case 3:
  73. {
  74. return BlocProvider(
  75. create: (context) => CommunityBloc(
  76. communityRepository: MockCommunityRepository()),
  77. child: CommunityPage(),
  78. );
  79. }
  80. default:
  81. {
  82. return Center(child: Text(tab));
  83. }
  84. }
  85. }).toList(),
  86. ),
  87. ),
  88. );
  89. }
  90. Widget buildTabBar(List<String> tabs) {
  91. return TabBar(
  92. isScrollable: true,
  93. indicator: BoxDecoration(color: Colors.transparent),
  94. indicatorSize: TabBarIndicatorSize.label,
  95. tabs: tabs.map((textStr) => Tab(text: textStr)).toList(),
  96. labelStyle: TextStyle(
  97. color: Color(0xff333333),
  98. fontSize: 30,
  99. fontFamily: 'NotoSansHans-Medium',
  100. ),
  101. unselectedLabelStyle: TextStyle(
  102. color: Color(0xff666666),
  103. fontSize: 30,
  104. fontFamily: 'NotoSansHans-Regular',
  105. ),
  106. );
  107. }
  108. }