Guest User

Untitled

a guest
Nov 14th, 2018
539
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2.  
  3. import 'dart:math';
  4. import 'dart:ui';
  5.  
  6. void main() => runApp(new MyApp());
  7.  
  8. class MyApp extends StatelessWidget {
  9.  
  10. @override
  11. Widget build(BuildContext context) {
  12. return new MaterialApp(
  13. title: 'Flutter Demo',
  14. theme: new ThemeData(
  15. primarySwatch: Colors.red,
  16. ),
  17. home: new MyHomePage(title: 'Flutter Demo Home Page'),
  18. );
  19. }
  20. }
  21.  
  22. class MyHomePage extends StatefulWidget {
  23. MyHomePage({Key key, this.title}) : super(key: key);
  24.  
  25. final String title;
  26.  
  27. @override
  28. _MyHomePageState createState() => new _MyHomePageState();
  29. }
  30.  
  31. class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin{
  32.  
  33. String batterylevel;
  34. int percentage = 0;
  35. int newPercentage;
  36. AnimationController percentageAnimationController;
  37.  
  38. @override
  39. void initState() {
  40. super.initState();
  41. setState(() {
  42. percentage = 0;
  43. });
  44. percentageAnimationController = new AnimationController(
  45. vsync: this,
  46. duration: new Duration(milliseconds: 5000)
  47. )..addListener((){
  48. setState((){
  49. percentage = lerpDouble(0.0,newPercentage.toDouble(),percentageAnimationController.value).toInt();
  50. });
  51. });
  52. percentageAnimationController.addStatusListener((state) => print("test: $state"));
  53.  
  54. }
  55.  
  56. void _fetchdata() {
  57. setState(() {
  58. print("before percent : $percentage");
  59. newPercentage = percentage+10;
  60. if(newPercentage>=100){
  61. percentage = 0;
  62. newPercentage = 0;
  63. }
  64. print("percentage : $percentage");
  65. percentageAnimationController.forward(from: 0.0);
  66. batterylevel = newPercentage.toString();
  67. percentage = newPercentage;
  68. print("battery level : $batterylevel");
  69. });
  70. }
  71.  
  72. @override
  73. Widget build(BuildContext context) {
  74.  
  75. return new Scaffold(
  76. appBar: new AppBar(
  77. title: new Text(widget.title),
  78. ),
  79. body: new Center(
  80. child: new Column(
  81. mainAxisAlignment: MainAxisAlignment.center,
  82. children: <Widget>[
  83. new CustomPaint(
  84. foregroundPainter: new MyPainter(
  85. lineColor: Colors.red[50],
  86. completeColor: Colors.redAccent,
  87. completePercent: percentage.toDouble(),
  88. width: 12.0
  89. ),
  90. child: new Padding(
  91. padding: const EdgeInsets.all(32.0),
  92. child: new Text(
  93. '$batterylevel',
  94.  
  95. ),
  96. ),
  97. ),
  98.  
  99. ],
  100. ),
  101. ),
  102. floatingActionButton: new FloatingActionButton(
  103. onPressed: _fetchdata,
  104. tooltip: 'Refresh',
  105. child: new Icon(Icons.refresh),
  106. ), // This trailing comma makes auto-formatting nicer for build methods.
  107. );
  108. }
  109. }
  110.  
  111. class MyPainter extends CustomPainter{
  112. Color lineColor;
  113. Color completeColor;
  114. double completePercent;
  115. double width;
  116. MyPainter({this.lineColor,this.completeColor,this.completePercent,this.width});
  117. @override
  118. void paint(Canvas canvas, Size size) {
  119. Paint line = new Paint()
  120. ..color = lineColor
  121. ..strokeCap = StrokeCap.round
  122. ..style = PaintingStyle.stroke
  123. ..strokeWidth = width;
  124. Paint complete = new Paint()
  125. ..color = completeColor
  126. ..strokeCap = StrokeCap.round
  127. ..style = PaintingStyle.stroke
  128. ..strokeWidth = width;
  129. Offset center = new Offset(size.width/2, size.height/2);
  130. double radius = min(size.width/2,size.height/2);
  131. canvas.drawCircle(
  132. center,
  133. radius,
  134. line
  135. );
  136. double arcAngle = 2*pi* (completePercent/100);
  137. canvas.drawArc(
  138. new Rect.fromCircle(center: center,radius: radius),
  139. -pi/2,
  140. arcAngle,
  141. false,
  142. complete
  143. );
  144. }
  145. @override
  146. bool shouldRepaint(CustomPainter oldDelegate) {
  147. return true;
  148. }
  149. }
Add Comment
Please, Sign In to add comment