diff --git a/example/lib/main.dart b/example/lib/main.dart index 1f1a64b..3ab2974 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -74,7 +74,9 @@ class _MyAppState extends State { body: Center( child: Column( children: [ - CastButton(), + CastButton( + color: Colors.blue, + ), Text( 'States', style: Theme.of(context).textTheme.title, diff --git a/lib/src/cast/widgets/CastButton.dart b/lib/src/cast/widgets/CastButton.dart index 1fb6416..07ea17e 100644 --- a/lib/src/cast/widgets/CastButton.dart +++ b/lib/src/cast/widgets/CastButton.dart @@ -4,10 +4,18 @@ import '../../flutter_cast_framework.dart'; import 'CastIcon.dart'; class CastButton extends StatelessWidget { + final Color color; + + CastButton({ + this.color, + }); + @override Widget build(BuildContext context) { return GestureDetector( - child: CastIcon(), + child: CastIcon( + color: color, + ), onTap: () => FlutterCastFramework.castContext.showCastChooserDialog()); } } diff --git a/lib/src/cast/widgets/CastIcon.dart b/lib/src/cast/widgets/CastIcon.dart index c42a804..968c8c1 100644 --- a/lib/src/cast/widgets/CastIcon.dart +++ b/lib/src/cast/widgets/CastIcon.dart @@ -1,16 +1,26 @@ import 'package:flutter/widgets.dart'; -import '../CastContext.dart'; -import '../../flutter_cast_framework.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import '../../flutter_cast_framework.dart'; +import '../CastContext.dart'; + +const Color _defaultIconColor = Color.fromARGB(255, 255, 255, 255); // white + class CastIcon extends StatefulWidget { + final Color color; + + CastIcon({ + this.color = _defaultIconColor, + }); + @override _CastIconState createState() => _CastIconState(); } -Widget _getButton(String assetName) { +Widget _getButton(String assetName, Color color) { return SvgPicture.asset( assetName, + color: color, package: 'flutter_cast_framework', semanticsLabel: 'Cast Button', ); @@ -36,7 +46,7 @@ class _CastIconState extends State with TickerProviderStateMixin { Widget _getEmpty() => Container(); - Widget _getAnimatedButton() => _ConnectingIcon(); + Widget _getAnimatedButton() => _ConnectingIcon(color: widget.color); @override Widget build(BuildContext context) { @@ -45,13 +55,13 @@ class _CastIconState extends State with TickerProviderStateMixin { return _getEmpty(); case CastState.unconnected: - return _getButton("assets/ic_cast_24dp.svg"); + return _getButton("assets/ic_cast_24dp.svg", widget.color); case CastState.connecting: return _getAnimatedButton(); case CastState.connected: - return _getButton("assets/ic_cast_connected_24dp.svg"); + return _getButton("assets/ic_cast_connected_24dp.svg", widget.color); case CastState.idle: default: @@ -62,6 +72,12 @@ class _CastIconState extends State with TickerProviderStateMixin { } class _ConnectingIcon extends StatefulWidget { + final Color color; + + _ConnectingIcon({ + this.color = _defaultIconColor, + }); + @override _ConnectingIconState createState() => _ConnectingIconState(); } @@ -122,6 +138,6 @@ class _ConnectingIconState extends State<_ConnectingIcon> { _nextFrame(); } - return _getButton(frame); + return _getButton(frame, widget.color); } }