如何从颤振按钮类复制文本,同时向剪贴板添加其他文本?



我创建了一个自定义按钮,我在我的扑动应用程序的多个地方使用。我还使用吐司包复制和显示文本任何时候点击按钮。问题是我必须手动写出什么文本按钮将复制每次点击按钮,这是我的代码。

按钮,吐司和我如何调用按钮的代码。

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart';
import 'package:deciphernigeria/widgets/toastmessage.dart';
class InformationCard extends StatelessWidget {
  final String toptitle;
  final String bottomtext;
  final String copiedtext;
  const InformationCard({
    Key key,
    this.toptitle,
    this.bottomtext,
    this.copiedtext,
  }) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return InkWell(
      onTap:
          () {
        showtoast();
        Clipboard.setData(ClipboardData(text: copiedtext));
      },
      child: Column(
        children: [
          Container(
            margin: EdgeInsets.symmetric(vertical: 10),
            decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.circular(20),
              boxShadow: [
                BoxShadow(
                  offset: Offset(0.0, 10.0),
                  blurRadius: 2.0,
                  spreadRadius: 0.0,
                  color: Color.fromRGBO(51, 51, 51, 0.16),
                ),
              ],
            ),
            child: Row(
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.fromLTRB(10, 15, 0, 15),
                  child: SvgPicture.asset(
                    'assets/icons/information.svg',
                    height: 30,
                  ),
                ),
                SizedBox(width: 20),
                Expanded(
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      Padding(
                        padding: const EdgeInsets.fromLTRB(0,10,30,0),
                        child: Text(
                          toptitle,
                          style: Theme.of(context).textTheme.subtitle2,
                        ),
                      ),
                      SizedBox(
                        height: 5,
                      ),
                      Padding(
                        padding: const EdgeInsets.fromLTRB(0,0,30,10),
                        child: Text(bottomtext),
                      )
                    ],
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
void showtoast() => Fluttertoast.showToast(
      msg: 'copied text to clipboard',
      fontSize: 15,
  backgroundColor: Colors.lightGreen,
    );
InformationCard(
toptitle: 'the boy',
bottomtext: 'handsome',
copiedtext: 'handsome',
),

你可以看到当我调用按钮时,我必须在复制的文本中手动输入单词handsome,这样当他们点击按钮时,handsome就会被复制。我还必须手动写英俊在底部的文本,让他们知道他们点击和复制。请我怎么能做到这一点,我不需要在复制之前手动重写复制的文本,并添加一些额外的文本到复制的单词。例如,既然顶部的文本是男孩和底部的文本是英俊的,我如何编码按钮,使它会自动复制男孩是高和英俊时,点击而不写底部的文本?这样我就可以多次使用按钮而不用重写。由于

数据类在这种情况下非常方便。你所要做的就是创建一个类来表示你想要在UI中显示的数据结构。复制到剪贴板。请看下面的例子:

class InformationToBeCopied {
  final String bottomText;
  final double pi;
  const InformationToBeCopied({
    required this.bottomText,
    this.pi = 3.14,
  });
  @override
  toString() {
    return 'This is the bottom text: $bottomText nValue of PI: $pi';
  }
}

注意toString()方法,这就是您将如何构建需要复制到剪贴板的字符串。您可以在InformationToBeCopied类中添加任意多的属性。然后在您的小部件中,您可以在UI中使用toString()info.bottomText作为剪贴板。

class InformationCard extends StatelessWidget {
  final String toptitle;
  final InformationToBeCopied info;
  const InformationCard({
    Key? key,
    required this.toptitle,
    required this.info,
  }) : super(key: key);
  void copyInfoToClipboard() {
    showToast();
    Clipboard.setData(
      ClipboardData(text: info.toString()),
    );
  }
  @override
  Widget build(BuildContext context) {
    // ..
  }
}

相关内容

  • 没有找到相关文章

最新更新