如何允许用户从文本小部件中选择文本?

per*_*tus 3 dart flutter

在 Android 上,我习惯了TextView 的 textIsSelectable 属性,但在 Text 文档中没有看到。

目前我正在使用 TextField(可编辑)并且没有保存对显示文本的任何更改。我的主要需求是允许复制粘贴。

Rai*_*ann 5

我在我的一个项目中使用以下(简化的)代码解决了这个问题:

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

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey();
  String _text = 'TestString';

  /// Pastes given String to the clipboard and shows Popup-Snackbar
  void copyToClipboard(String toClipboard) {
    ClipboardData data = new ClipboardData(text: toClipboard);
    Clipboard.setData(data);
    _scaffoldKey.currentState.showSnackBar(new SnackBar(
      content: new Text(toClipboard + ' copied to clipboard.'),
    ));
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      key: _scaffoldKey,
      appBar: new AppBar(
        title: new Text('TestProject'),
      ),
      body: new InkWell(
        onLongPress: () => copyToClipboard(_text),
        child: new Center(
            child: new Text(_text),
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,只需将您的文本包装在一个可以检测手势的小部件中,或者使用GestureDetector来调用剪贴板方法。
希望能帮助到你。