markdown_viewer.dart 951 B

123456789101112131415161718192021222324252627282930313233343536
  1. import 'package:cached_network_image/cached_network_image.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_markdown/flutter_markdown.dart';
  4. /// Markdown组件
  5. class MarkdownViewer extends StatelessWidget {
  6. /// 内容
  7. final String content;
  8. /// 内容是否可以滚动
  9. final bool enableContentScroll;
  10. const MarkdownViewer({
  11. super.key,
  12. required this.content,
  13. required this.enableContentScroll,
  14. });
  15. @override
  16. Widget build(BuildContext context) {
  17. return Markdown(
  18. // 文档内容
  19. data: content,
  20. // 让Markdown高度自适应内容
  21. shrinkWrap: !enableContentScroll,
  22. // 禁用自身滚动
  23. physics:
  24. enableContentScroll
  25. ? BouncingScrollPhysics()
  26. : const NeverScrollableScrollPhysics(),
  27. // 配置图片加载器
  28. imageBuilder:
  29. (uri, title, alt) => CachedNetworkImage(imageUrl: uri.toString()),
  30. );
  31. }
  32. }