guide.dart 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import 'package:fast/utils/global.dart';
  2. import 'package:fast/utils/size_fit.dart';
  3. import 'package:flutter/material.dart';
  4. class Guide extends StatefulWidget {
  5. double endLeft, endTop, left, top;
  6. Guide(
  7. {Key? key,
  8. required this.endLeft,
  9. required this.endTop,
  10. required this.left,
  11. required this.top})
  12. : super(key: key);
  13. @override
  14. State<Guide> createState() => _GuideState();
  15. }
  16. class _GuideState extends State<Guide> {
  17. int index = 0;
  18. @override
  19. Widget build(BuildContext context) {
  20. SizeFit.initialize(context);
  21. var size = MediaQuery.of(context).size;
  22. var top = 180.px + size.height > 667.px ? 30.px : 10.px;
  23. var isBig = size.height > 667.px;
  24. double left1 = widget.left - 16.px;
  25. double top1 = widget.top + top + 60.px;
  26. double left2 = widget.endLeft - 74.px + 40.px;
  27. double top2 = widget.endTop + 40.px;
  28. double top3 = Global().circleWidth / 2.0 + top;
  29. if (!isBig) {
  30. left1 -= 6.px;
  31. top1 -= 45.px;
  32. top2 -= 20.px;
  33. top3 -= 30.px;
  34. }
  35. return Stack(
  36. children: [
  37. if (index == 0)
  38. Positioned(
  39. left: left1,
  40. top: top1,
  41. child: Image.asset(
  42. 'assets/images/tip0.png',
  43. width: 118.px,
  44. height: 118.px,
  45. )),
  46. if (index == 1)
  47. Positioned(
  48. left: left2,
  49. top: top2,
  50. child: Image.asset(
  51. 'assets/images/tip1.png',
  52. width: 148.px,
  53. height: 190.px,
  54. )),
  55. if (index == 2)
  56. Positioned(
  57. left: 375.px / 2.0 - 93.px,
  58. top: top3,
  59. child: Image.asset(
  60. 'assets/images/tip2.png',
  61. width: 186.px,
  62. height: 138.px,
  63. )),
  64. Positioned(
  65. child: GestureDetector(
  66. onTap: () => touchBtn(),
  67. onVerticalDragStart: (details) => touchBtn(),
  68. onHorizontalDragStart: (details) => touchBtn(),
  69. onLongPress: ()=>touchBtn(),
  70. ))
  71. ],
  72. );
  73. }
  74. touchBtn() {
  75. setState(() {
  76. index = index + 1;
  77. if (index > 2) {
  78. Navigator.of(context).pop();
  79. }
  80. });
  81. }
  82. }