view.dart 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. import 'package:electronic_assistant/base/base_page.dart';
  2. import 'package:electronic_assistant/module/files/controller.dart';
  3. import 'package:electronic_assistant/resource/colors.gen.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:flutter_screenutil/flutter_screenutil.dart';
  6. import '../../resource/assets.gen.dart';
  7. class FilesPage extends BasePage<FilesController> {
  8. const FilesPage({super.key});
  9. @override
  10. Widget? buildBody(BuildContext context) {
  11. return Scaffold(
  12. body: Column(
  13. children: [
  14. Column(
  15. children: [
  16. AppBar(
  17. title: const Text('文件夹'),
  18. actions: [
  19. IconButton(
  20. onPressed: () {},
  21. icon: ImageIcon(Assets.images.iconFilesNewDir.provider()),
  22. ),
  23. IconButton(
  24. onPressed: () {},
  25. icon: ImageIcon(Assets.images.iconMore.provider()),
  26. ),
  27. ],
  28. ),
  29. Container(
  30. margin: EdgeInsets.symmetric(horizontal: 12.w),
  31. padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 8.w),
  32. height: 36.w,
  33. decoration: BoxDecoration(
  34. color: Colors.white,
  35. borderRadius: BorderRadius.circular(8.w),
  36. ),
  37. child: TextField(
  38. maxLines: 1,
  39. textAlignVertical: TextAlignVertical.center,
  40. decoration: InputDecoration(
  41. hintText: '搜索所有文件标题 / 内容',
  42. border: InputBorder.none,
  43. icon: ImageIcon(Assets.images.iconSearch.provider()),
  44. iconColor: const Color.fromRGBO(95, 95, 97, 1),
  45. ),
  46. style: TextStyle(fontSize: 14.sp),
  47. ),
  48. ),
  49. ],
  50. ),
  51. Expanded(
  52. child: Padding(
  53. padding: EdgeInsets.only(top: 16.w, left: 12.w, right: 12.w),
  54. child: CustomScrollView(
  55. slivers: [
  56. SliverAnimatedGrid(
  57. itemBuilder: _buildDirItem,
  58. gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  59. crossAxisCount: 2,
  60. crossAxisSpacing: 8.w,
  61. mainAxisSpacing: 8.w,
  62. childAspectRatio: 164 / 65,
  63. ),
  64. initialItemCount: 10,
  65. ),
  66. SliverToBoxAdapter(
  67. child: Padding(
  68. padding: EdgeInsets.only(top: 20.w, bottom: 12.w),
  69. child: Text('全部谈话',
  70. style: TextStyle(
  71. fontSize: 14.sp,
  72. color: ColorName.secondaryTextColor,
  73. fontWeight: FontWeight.bold))),
  74. ),
  75. SliverAnimatedList(
  76. itemBuilder: _buildFileItem,
  77. initialItemCount: 20,
  78. )
  79. ],
  80. )))
  81. ],
  82. ),
  83. );
  84. }
  85. Widget _buildDirItem(
  86. BuildContext context, int index, Animation<double> animation) {
  87. return Container(
  88. decoration: BoxDecoration(
  89. color: Colors.white,
  90. borderRadius: BorderRadius.circular(8.w),
  91. ),
  92. padding: EdgeInsets.only(left: 8.w),
  93. child: Row(
  94. crossAxisAlignment: CrossAxisAlignment.center,
  95. children: [
  96. Image(
  97. image: Assets.images.iconFilesDir.provider(),
  98. width: 32.w,
  99. height: 32.w),
  100. Expanded(
  101. child: Padding(
  102. padding: EdgeInsets.symmetric(horizontal: 8.w),
  103. child: Column(
  104. mainAxisAlignment: MainAxisAlignment.center,
  105. crossAxisAlignment: CrossAxisAlignment.start,
  106. children: [
  107. Text('文件夹',
  108. maxLines: 1,
  109. overflow: TextOverflow.ellipsis,
  110. style: TextStyle(
  111. fontSize: 14.sp,
  112. color: ColorName.primaryTextColor,
  113. fontWeight: FontWeight.bold)),
  114. Text('2021-09-09 12:00:00',
  115. maxLines: 1,
  116. overflow: TextOverflow.ellipsis,
  117. style: TextStyle(
  118. fontSize: 12.sp, color: ColorName.secondaryTextColor)),
  119. ],
  120. ),
  121. ))
  122. ],
  123. ),
  124. );
  125. }
  126. Widget _buildFileItem(
  127. BuildContext context, int index, Animation<double> animation) {
  128. return Padding(
  129. padding: EdgeInsets.only(bottom: 8.w),
  130. child: Container(
  131. decoration: BoxDecoration(
  132. color: Colors.white,
  133. borderRadius: BorderRadius.circular(8.w),
  134. ),
  135. padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 14.w),
  136. child: Row(
  137. crossAxisAlignment: CrossAxisAlignment.start,
  138. children: [
  139. Image(
  140. image: Assets.images.iconFilesFile.provider(),
  141. width: 28.w,
  142. height: 32.w),
  143. Expanded(
  144. child: Padding(
  145. padding: EdgeInsets.symmetric(horizontal: 8.w),
  146. child: Column(
  147. crossAxisAlignment: CrossAxisAlignment.start,
  148. children: [
  149. Text('文件标题',
  150. maxLines: 1,
  151. overflow: TextOverflow.ellipsis,
  152. style: TextStyle(
  153. fontSize: 14.sp,
  154. color: ColorName.primaryTextColor,
  155. fontWeight: FontWeight.bold)),
  156. Text(
  157. '这个群,现在由我管理。目的是把你们训练成一个个社会高薪人士,从本周起,hhhhhhhhhhhhh已经开始执行军事化理...',
  158. maxLines: 2,
  159. overflow: TextOverflow.ellipsis,
  160. style: TextStyle(
  161. fontSize: 12.sp,
  162. color: ColorName.secondaryTextColor)),
  163. Container(
  164. margin: EdgeInsets.only(top: 6.w),
  165. child: Row(
  166. children: [
  167. Text("1m12s",
  168. style: TextStyle(
  169. fontSize: 12.sp,
  170. color: ColorName.tertiaryTextColor)),
  171. Text(" | ",
  172. style: TextStyle(
  173. fontSize: 12.sp,
  174. color: ColorName.tertiaryTextColor)),
  175. Text("2021-09-09 12:00:00",
  176. style: TextStyle(
  177. fontSize: 12.sp,
  178. color: ColorName.tertiaryTextColor)),
  179. ],
  180. ),
  181. )
  182. ],
  183. ),
  184. )),
  185. ],
  186. ),
  187. ));
  188. }
  189. }