如何防止用户更改设置的TextEditingController文本?

时间:2018-12-28 20:11:37

标签: flutter

我已经在代码中设置了TextEditingController,我想找到一种方法来阻止用户更改我的代码已经输入到小部件中的给定文本。

我已经创建了一个TextEditingController()并将文本设置为我想要的内容(我不想让用户更改,而是在之后添加)。

_controller =新的TextEditingController();

_controller.text =“示例:”;

按上述设置后,我仍然可以退格文本,那么是否可以确保用户不能退格控制器文本?

2 个答案:

答案 0 :(得分:0)

尝试此代码让我知道我是否正确理解

import 'package:flutter/material.dart';

main() => runApp(InitialSetupPage());

class InitialSetupPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "EditText manuplation",
      debugShowCheckedModeBanner: false,
      theme: ThemeData(primarySwatch: Colors.blue),
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {

  static TextEditingController _controller = TextEditingController(text: "Initial:")
  ..addListener((){
    if(! _controller?.text?.startsWith("Initial:")){
      _controller?.value = _controller?.value?.copyWith(text: "Initial:") ;

    }
  });

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(),
      body:  Container(
        child: TextField(controller: _controller,)
      ),
    );
  }
}

答案 1 :(得分:0)

也许,您可以做这样的事情。如果您使用诸如退格或剪切之类的功能,则此文本将恢复您的文本。

TextField(
  controller: textEditingController,
  onChanged: (text){
    if(text.length < textEditingController.text.length){
      textEditingController.text = textEditingController.text;
    }
  },
),