Skip to content

Instantly share code, notes, and snippets.

@Shubham-Narkhede
Created November 30, 2019 03:52
Show Gist options
  • Save Shubham-Narkhede/a71f91e8923ae688aab2d4a6f5872058 to your computer and use it in GitHub Desktop.
Save Shubham-Narkhede/a71f91e8923ae688aab2d4a6f5872058 to your computer and use it in GitHub Desktop.
import 'dart:async';
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Button Loader',
theme: new ThemeData(
primarySwatch: Colors.green,
),
home: new MyHomePage(title: 'Button Loader'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
int myState = 0;
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
centerTitle: true ,
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Padding(
padding: const EdgeInsets.all(16.0),
child: new MaterialButton(
child: ButtonTextAndIcon(),
onPressed: () {
setState(() {
if (myState == 0) {
controllerButton();
}
});
},
elevation: 4.0,
height: 48.0,
color: Colors.red,
splashColor: Colors.white,
),
)
],
),
),
);
}
Widget ButtonTextAndIcon() {
if (myState == 0) {
return new Text(
"Login",
style: const TextStyle(
color: Colors.black,
fontSize: 16.0,
),
);
} else if (myState == 1) {
return CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.green),
);
} else {
return Icon(Icons.check, color: Colors.black);
}
}
void controllerButton() {
setState(() {
myState = 1;
});
Timer(Duration(milliseconds: 4000), () {
myState = 2;
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment