xieyi_list.dart 5.0 KB

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