Search code examples
flutterdart

Dart functions for flutter, replacing FlatButton with TextButton


How can I replace the FlatButton with TextButton while retaining the same functionality?

I need to know what to put into Expanded buildKey({Color color, int soundNumber}) for TextButton because color: color, doesn't work for TextButton

import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';

void main() => runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  void playSound(int soundNumber) {
    final player = AudioCache();
    player.play('note$soundNumber.wav');
  }

  Expanded buildKey({Color color, int soundNumber}) {
    return Expanded(
      child: FlatButton(
        color: color,
        onPressed: () {
          playSound(soundNumber);
        },
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.black,
        body: SafeArea(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: <Widget>[
              buildKey(color: Colors.red, soundNumber: 1),
              buildKey(color: Colors.orange, soundNumber: 2),
              buildKey(color: Colors.yellow, soundNumber: 3),
              buildKey(color: Colors.green, soundNumber: 4),
              buildKey(color: Colors.teal, soundNumber: 5),
              buildKey(color: Colors.blue, soundNumber: 6),
              buildKey(color: Colors.purple, soundNumber: 7),
            ],
          ),
        ),
      ),
    );
  }
}

Solution

  • Please try with this

    Expanded buildKey({Color color, int soundNumber}) {
      return Expanded(
        child: TextButton(
          onPressed: () {
            playSound(soundNumber);
          },
          style: ButtonStyle(backgroundColor: MaterialStateProperty.all(color)),
          child: Text('Button Name'),
        ),
      );
    }