我有一个用 Flutter 制作的钢琴项目,想添加一个开关,以便在单击时更改 panot 的声音字体。
这是原始代码
class PianoSection extends StatefulWidget {
PianoSection({
Key key,
this.controller,
this.disableScroll = false,
this.showLabels = true,
this.labelsOnlyOctaves = false,
this.feedback = false,
this.keyWidth = _kDefaultKeyWidth,
this.soundFontPath ,
this.isPiano,
}) : super(key: key)
{
if (isPiano == false) {
sound_FontPath = 'assets/sounds/Guitar Acoustic.sf2';}
else {
sound_FontPath = 'assets/sounds/Piano.sf2';
}
}
final ScrollController controller;
final bool disableScroll, labelsOnlyOctaves, showLabels, feedback, isPiano;
final double keyWidth;
final String soundFontPath;
@override
_PianoSectionState createState() => _PianoSectionState();
}
在设置文件中:
ListTile(
title: Text("Guitar"),
trailing: Switch(
value: state.settings.isPiano,
onChanged: (bool value) {
BlocProvider.of<SettingsBloc>(context).add(
ChangeSettings(state.settings..isPiano = value));
})),
在 changegSetting 文件中:
import 'package:meta/meta.dart';
import 'settings.dart';
@immutable
abstract class SettingsEvent {}
class ChangeSettings extends SettingsEvent {
ChangeSettings(this.settings);
final Settings settings;
}
class CheckSettings extends SettingsEvent {}
你能告诉我如何添加这个功能吗?添加此功能之前的原始代码可以在这里找到: