Сделайте так, как вы только что сделали для функции onPressed. Разница лишь в том, что типом будет String.
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
class CustomButton extends StatelessWidget {
final GestureTapCallback onPressed;
final String buttonText;
CustomButton({@required this.onPressed, this.buttonText});
@override
Widget build(BuildContext context) {
return RawMaterialButton(
fillColor: Colors.green,
splashColor: Colors.greenAccent,
child: Padding(
padding: EdgeInsets.all(10.0),
child: Row(
mainAxisSize: MainAxisSize.min,
children: const <Widget>[
SizedBox(
width: 10.0,
),
Text(
buttonText ?? 'Tap me',
maxLines: 1,
style: TextStyle(color: Colors.white,fontFamily: 'ActoBold'),
),
],
),
),
onPressed: onPressed,
);
}
}
Тогда вы можете передать свое значение в CustomButton.
CustomButton(
buttonText: 'Updated Text',
onPressed: () {
print("Tapped Me");
},
)
Если вы хотите динамически изменить значение при нажатии кнопки , используйте виджет с состоянием:
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
String _buttonText;
Widget build(BuildContext context) {
return Scaffold(
body: CustomButton(
buttonText: _buttonText,
onPressed: () {
print("Tap Me");
setState(() {
_buttonText = 'Tapped';
});
},
),
);
}
}