首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RawMaterialButton中的颤动动态文本

RawMaterialButton中的颤动动态文本
EN

Stack Overflow用户
提问于 2020-04-30 12:45:05
回答 2查看 445关注 0票数 0

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

代码语言:javascript
复制
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,

    );
  }
}

从我的页面调用它,就像这样

代码语言:javascript
复制
CustomButton(
     onPressed: () {
        print("Tapped Me");
      },
)

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-30 13:51:55

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

代码语言:javascript
复制
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。

代码语言:javascript
复制
CustomButton(
   buttonText: 'Updated Text',
   onPressed: () {
      print("Tapped Me");
   },
)

如果要在单击按钮时动态更改该值,请使用有状态小部件:

代码语言:javascript
复制
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';
          });
        },
      ),
    );
  }
}
票数 0
EN

Stack Overflow用户

发布于 2020-04-30 12:58:11

执行以下更改...

代码语言:javascript
复制
CustomButton(
child: Text(trigger),
 onPressed: () {
    setState((){
          trigger="tapped me";
})
  },
)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61516094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档