RawMaterialButton 中的 Flutter 动态文本

Posted

技术标签:

【中文标题】RawMaterialButton 中的 Flutter 动态文本【英文标题】:Flutter dynamic text in RawMaterialButton 【发布时间】:2020-08-14 09:14:47 【问题描述】:

我正在用颤振创建自己的样式按钮。到目前为止,我创建了一个commonui.dart 文件并放置了以下代码

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

class CustomButton extends StatelessWidget 
  CustomButton(@required this.onPressed);
  final GestureTapCallback onPressed;

  @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(
              "Tap Me",
              maxLines: 1,
              style: TextStyle(color: Colors.white,fontFamily: 'ActoBold'),
            ),
          ],
        ),
      ),
      onPressed: onPressed,

    );
  

然后像这样从我的页面调用它

CustomButton(
     onPressed: () 
        print("Tapped Me");
      ,
)

我想让按钮文本动态化。如何将变量传递给CustomButton 小部件?

【问题讨论】:

你为什么不做 print(variablename);打电话的时候? 【参考方案1】:

进行以下更改...

CustomButton(
child: Text(trigger),
 onPressed: () 
    setState(()
          trigger="tapped me";
)
  ,
)

不要忘记声明变量并将您的类无状态更改为有状态小部件。

【讨论】:

【参考方案2】:

像刚才对 onPressed 函数所做的那样做。唯一的区别是类型是字符串。

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';
          );
        ,
      ),
    );
  


【讨论】:

以上是关于RawMaterialButton 中的 Flutter 动态文本的主要内容,如果未能解决你的问题,请参考以下文章

Flutter创建圆圈图标按钮

如何在 Flutter 中创建圆形图标按钮?

Flutter控件——常用控件:按钮

如何停止颤振应用程序中的firebase错误

如何将大小设置为FloatingActionButton

如何从 Flutter 中的平台特定模块(Android)登录