xieyi_list.dart 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import 'dart:io';
  2. import 'package:flutter/foundation.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter_screenutil/flutter_screenutil.dart';
  5. import 'package:liftmanager/internal/wode/page/xieyi_pdf.dart';
  6. import 'package:liftmanager/net/api_service.dart';
  7. import 'package:liftmanager/res/resources.dart';
  8. import 'package:liftmanager/utils/toast.dart';
  9. import 'package:liftmanager/utils/utils.dart';
  10. import 'package:liftmanager/widgets/app_bar.dart';
  11. import 'package:path_provider/path_provider.dart';
  12. class XieyiList extends StatefulWidget {
  13. @override
  14. State<StatefulWidget> createState() {
  15. return XieyiListState();
  16. }
  17. }
  18. class XieyiListState extends State<XieyiList> {
  19. @override
  20. void initState() {
  21. super.initState();
  22. getXieyiList();
  23. }
  24. bool _hasData = false;
  25. List<dynamic> xieList;
  26. Future getXieyiList() async {
  27. await NewApiService().getXieyiListNoPage(
  28. onSuccess: (res) {
  29. if (res != null) {
  30. print(123456);
  31. print(res);
  32. xieList = res;
  33. _hasData = true;
  34. setState(() {});
  35. }
  36. }, onError: (code, msg) {
  37. toasts(msg);
  38. });
  39. }
  40. Future<File> createFileOfPdfUrl(url) async {
  41. final filename = url.substring(url.lastIndexOf("/") + 1);
  42. var request = await HttpClient().getUrl(Uri.parse(url));
  43. var response = await request.close();
  44. var bytes = await consolidateHttpClientResponseBytes(response);
  45. String dir = (await getApplicationDocumentsDirectory()).path;
  46. File file = new File('$dir/$filename');
  47. await file.writeAsBytes(bytes);
  48. return file;
  49. }
  50. @override
  51. Widget build(BuildContext context) {
  52. double width = MediaQuery.of(context).size.width;
  53. return Scaffold(
  54. resizeToAvoidBottomPadding: false, //不让键盘弹上去
  55. appBar: MyAppBar(
  56. centerTitle: "专家协议列表",
  57. ),
  58. body: _hasData
  59. ? Container(
  60. child: ListView(
  61. children:xieList.map((i) {
  62. return InkWell(
  63. child: Container(
  64. padding: EdgeInsets.only(
  65. left: ScreenUtil().setWidth(15),
  66. right: ScreenUtil().setWidth(15),
  67. top: ScreenUtil().setHeight(10),
  68. bottom: ScreenUtil().setHeight(10)),
  69. decoration: BoxDecoration(
  70. border: Border(
  71. bottom: BorderSide(width: 0.5, color: Colours.line),
  72. ),
  73. ),
  74. child: Text(
  75. i.name ?? "",
  76. textAlign: TextAlign.left,
  77. style: TextStyle(
  78. fontSize: ScreenUtil().setSp(15),
  79. color: Color(0xff333333),
  80. ),
  81. ),
  82. ),
  83. onTap: () {
  84. print(i.url);
  85. String fileUrl = Utils.getImagePath(i.url);
  86. createFileOfPdfUrl(fileUrl).then(
  87. (f) {
  88. setState(
  89. () {
  90. Navigator.push(
  91. context,
  92. MaterialPageRoute(
  93. builder: (context) =>
  94. XieyiPdf(f.path),
  95. ),
  96. );
  97. },
  98. );
  99. },
  100. );
  101. Navigator.push(
  102. context,
  103. MaterialPageRoute(
  104. builder: (context) =>
  105. XieyiPdf(i.url),
  106. ),
  107. );
  108. },
  109. );
  110. }).toList()
  111. ),
  112. )
  113. : Center(
  114. child: Text("正在加载..."),
  115. ));
  116. }
  117. }