首页 > 解决方案 > 用于颤振的 Dart 函数,将 FlatButton 替换为 TextButton

问题描述

如何在保留相同功能的同时将 FlatButton 替换为 TextButton?

我需要知道在 TextButton 的 Expanded buildKey({Color color, int soundNumber}) 中放入什么,因为 color: color,不适用于 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),
            ],
          ),
        ),
      ),
    );
  }
}

标签: flutterdart

解决方案


请试试这个

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

推荐阅读