buildButton method

Widget buildButton(
  1. BuildContext context,
  2. ValueNotifier<bool> arrowDownNotifier
)

Implementation

Widget buildButton(
  BuildContext context,
  ValueNotifier<bool> arrowDownNotifier,
) {
  /// local variables
  final decoration = BoxDecoration(
    color: Colors.transparent,
    borderRadius: BorderRadius.circular(35),
  );

  /// return void container
  if (provider.pathList.isEmpty || provider.currentAlbum == null) {
    return Container();
  }

  /// return decorated container without data
  if (provider.currentAlbum == null) {
    return Container(
      padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 10),
      decoration: decoration,
    );
  } else {
    /// return list of available albums
    return Container(
      decoration: decoration,
      padding: const EdgeInsets.only(left: 15, bottom: 15),
      alignment: Alignment.bottomLeft,
      child: Row(
        mainAxisSize: MainAxisSize.min,
        children: [
          /// current album name
          SizedBox(
            width: MediaQuery.of(context).size.width * 0.28,
            child: Text(
              provider.currentAlbum!.name,
              overflow: TextOverflow.ellipsis,
              style: TextStyle(
                  color: appBarTextColor,
                  fontSize: 18,
                  letterSpacing: 0.8,
                  fontWeight: FontWeight.w500),
            ),
          ),
          const Spacer(),

          /// animated arrow icon
          Padding(
            padding: const EdgeInsets.only(right: 5),
            child: AnimatedBuilder(
              animation: arrowDownNotifier,
              builder: (BuildContext context, child) {
                return AnimatedRotation(
                  duration: const Duration(milliseconds: 300),
                  turns: arrowDownNotifier.value ? 0.5 : 0,
                  child: child,
                );
              },
              child: Icon(
                Icons.keyboard_arrow_down,
                color: appBarIconColor,
              ),
            ),
          ),
        ],
      ),
    );
  }
}