ProxyFilePre.dart 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import 'dart:io';
  2. import 'package:flutter/cupertino.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:neofilemanager/Item/Common.dart';
  5. import 'package:neofilemanager/Item/Preview/FilePre.dart';
  6. import 'package:neofilemanager/Item/Preview/Impl/RealFilePre.dart';
  7. class ProxyFilePre extends FilePre {
  8. Common common;
  9. FileSystemEntity file;
  10. String extension;
  11. double iconHeight = 30.0;
  12. double iconWidth = 30.0;
  13. double fileHeight = 50.0;
  14. double fileWidth = 70.0;
  15. RealFilePre realFilePre;
  16. ProxyFilePre(
  17. this.common, this.file, this.extension, this.fileHeight, this.fileWidth);
  18. Widget build(BuildContext context) {
  19. // 对加载情况进行判断,如果加载完成才展示图片,否则展示一个小的代理图片
  20. return FutureBuilder(
  21. future: returnRealFIlePre(),
  22. builder: (context, snapshot) {
  23. if (snapshot.connectionState == ConnectionState.done) {
  24. print('::::done');
  25. return realFilePre;
  26. } else {
  27. print('::::else');
  28. return Image.asset(
  29. common.selectIcon(extension),
  30. height: iconHeight,
  31. width: iconWidth,
  32. );
  33. }
  34. },
  35. );
  36. }
  37. // 对真实图片的异步加载
  38. Future<Widget> returnRealFIlePre() async {
  39. return realFilePre =
  40. new RealFilePre(common, file, extension, fileHeight, fileWidth);
  41. }
  42. }