Skip to content

Instantly share code, notes, and snippets.

@acodeb
Created April 11, 2019 01:35
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save acodeb/36962a8cb85be9ea02a7e0b6a902e077 to your computer and use it in GitHub Desktop.
Save acodeb/36962a8cb85be9ea02a7e0b6a902e077 to your computer and use it in GitHub Desktop.
Flutter: Change RaisedButton color dynamically in onPressed function
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<Zone> zones = [
Zone('zone1', true, color: Colors.blue),
Zone('zone1', false, color: Colors.blue),
Zone('zone1', true, color: Colors.blue),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Wrap(
children: _createButton(context, zones),
)),
);
}
List<Widget> _createButton(BuildContext context, List<Zone> zones) {
return zones.map((Zone zone) {
return RaisedButton(
onPressed: () {
setState(() {
if (!zone.isSelected) {
zone.color = Colors.white;
}
});
},
color: zone.color ??= Theme.of(context).primaryColor,
child: Text(zone.text),
);
}).toList();
}
}
class Zone {
String text;
bool isSelected;
Color color;
Zone(this.text, this.isSelected, {this.color});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment