基础组件库
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

71 строка
2.2 KiB

  1. import 'dart:convert';
  2. import 'package:flutter/material.dart';
  3. import 'package:zhiying_base_widget/widgets/custom/search/model/custom_search_model.dart';
  4. import 'package:zhiying_comm/zhiying_comm.dart';
  5. ///
  6. /// 通用模块的搜索栏
  7. ///
  8. class CustomSearchWidget extends StatelessWidget {
  9. final Map<String, dynamic> data;
  10. CustomSearchModel model;
  11. CustomSearchWidget(this.data, {Key key}) : super(key: key) {
  12. try {
  13. model = CustomSearchModel.fromJson(jsonDecode(data['data']));
  14. } catch (e, s) {
  15. Logger.warn(e, s);
  16. }
  17. }
  18. // 点击事件
  19. void _onClickListener(BuildContext context, SkipModel skipModel) {
  20. RouterUtil.route(skipModel, skipModel.toJson(), context);
  21. }
  22. @override
  23. Widget build(BuildContext context) {
  24. return _buildStyle1Widget(context);
  25. }
  26. /// 样式1
  27. Widget _buildStyle1Widget(BuildContext context) {
  28. return GestureDetector(
  29. behavior: HitTestBehavior.opaque,
  30. onTap: () => _onClickListener(context, model?.listStyle?.searchCss),
  31. child: Container(
  32. width: double.infinity,
  33. decoration: BoxDecoration(color: HexColor.fromHex(model?.bgColor ?? '#FFFFFF')),
  34. padding: const EdgeInsets.symmetric(horizontal: 12.5, vertical: 4),
  35. child: Container(
  36. width: double.infinity,
  37. decoration: BoxDecoration(
  38. borderRadius: BorderRadius.circular(40),
  39. color: HexColor.fromHex(model?.listStyle?.searchCss?.bgColor ?? '#F9F9F9'),
  40. ),
  41. padding: const EdgeInsets.symmetric(vertical: 6),
  42. child: Row(
  43. mainAxisAlignment: MainAxisAlignment.center,
  44. children: <Widget>[
  45. /// 搜索按钮
  46. CachedNetworkImage(
  47. imageUrl: model?.listStyle?.searchCss?.image ?? '',
  48. height: 20,
  49. width: 20,
  50. ),
  51. const SizedBox(width: 7.5),
  52. /// 提示文字
  53. Text(
  54. model?.listStyle?.searchCss?.text ?? '搜索更多优惠商品',
  55. style: TextStyle(fontSize: 14, color: HexColor.fromHex(model?.listStyle?.searchCss?.textColor ?? '#999999')),
  56. )
  57. ],
  58. ),
  59. ),
  60. ),
  61. );
  62. }
  63. }