Как я могу ограничить текст labelText в TextFormField - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в программировании, работаю с командой, в которой я помогаю с небольшими проблемами. Я столкнулся с проблемой, когда текст моей метки перебирает текст плоской кнопки, которая находится в конце поля формы текста. Вот скриншот рассматриваемой проблемы

Я попытался поместить TextOverflow.ellipsis, но он работает только с виджетом Текст. Другая вещь, которую я попробовал, - это создать метод добавления разрывов строк для каждого слова, но если все не в левой части, и пользователь не увидит, что он печатает, он будет go поверх текста:

 String addLineBreaks() {
    String stringWithLB = "";
    List<String> splitString = this.split(" ");
    splitString.forEach((word) {
      stringWithLB += "$word\n";
    });
    return stringWithLB;
  }

Как сделать так, чтобы этот текст исчезал в конце или иметь точки дерева или другие идеи.

Это мой код:

class AccountDetailsPage extends StatefulWidget {
  @override
  _AccountDetailsPageState createState() => _AccountDetailsPageState();
}

class _AccountDetailsPageState extends State<AccountDetailsPage> {
  var _emailController = TextEditingController();

  var _nameController = TextEditingController();

  var _passwordController = TextEditingController();

  final mockPassword = '**********';

  FocusNode passwordFocus;
  FocusNode emailFocus;
  FocusNode userNameFocus;

  bool passwordUpdated = false;

  File _image;

  bool imagePicked;

  @override
  void initState() {
    super.initState();
    passwordFocus = FocusNode();
    emailFocus = FocusNode();
    userNameFocus = FocusNode();
  }

  @override
  Widget build(BuildContext context) {
    return Consumer2<IntlO, MTThemeO>(
      builder: (context, intl, theme, child) => Scaffold(
        backgroundColor: theme.backgroundColor,
        appBar: CustomAppBar(
          onBackTap: () {
            if (_image != null) _image.deleteSync();
            Navigator.pushNamed(context, RouteName.homePage);
          },
          title: intl.m("Account details"),
        ),
        body: SingleChildScrollView(
          child: SizedBox(
            height: MediaQuery.of(context).size.height + 15.0,
            child: Padding(
              padding: const EdgeInsets.symmetric(horizontal: 40.0),
              child: Consumer<UserO>(builder: (context, userO, c) {
                return Column(
                  children: <Widget>[
                    Spacer(),
                    Stack(
                      overflow: Overflow.visible,
                      children: <Widget>[
                        InkWell(
                          onTap: () {
                            getImage();
                          },
                          child: Container(
                            width: 140,
                            height: 140,
                            decoration: BoxDecoration(
                              borderRadius: BorderRadius.all(
                                Radius.circular(100.00),
                              ),
                              border: new Border.all(
                                color: theme.accountPhotoBorderColor,
                              ),
                            ),
                            child: ClipOval(child: profilePicture(userO)),
                          ),
                        ),
                        Positioned(
                          left: 135,
                          top: 0,
                          child: InkWell(
                            onTap: getImage,
                            child: Text(
                              intl.m("Edit"),
                              style: TextStyle(
                                  fontFamily: theme.muliRegularFont,
                                  color: theme.editTextColor,
                                  fontSize: 11),
                            ),
                          ),
                        ),
                      ],
                    ),
                    Spacer(),
                    AccountDetailsTextField(
                      focusNode: userNameFocus,
                      labelText: intl.m("First name"),
                      textController: _nameController..text = userO.name,
                    ),
                    AccountDetailsTextField(
                      focusNode: emailFocus,
                      labelText: intl.m("email address").toString().addLineBreaks(),
                      textController: _emailController..text = userO.email, //THIS IS THE PART IN QUESTION
                    ),
                    AccountDetailsTextField(
                      focusNode: passwordFocus,
                      labelText: intl.m("password"),
                      textController: _passwordController..text = mockPassword,
                      isPassword: true,
                    ),
                    Spacer(
                      flex: 2,
                    ),
                    Consumer3<UpdateUserInfoA, IsLoggedInO, SignOutA>(
                        builder: (context, action, loggedin, signout, c) {
                      return Button(
                        onPressed: () {
                          if (loggedin.loggedIn) {
                            action
                                .updateUserInfo(
                                    email: shouldUpdateUserInfo(
                                        userO.email, _emailController.text),
                                    userName: shouldUpdateUserInfo(
                                        userO.name, _nameController.text),
                                    password: shouldUpdatePassword(
                                        _passwordController.text),
                                    image: _image ??
                                        File(
                                            'assets/profile/default-profile.png'))
                                .then((_) {
                              if (passwordUpdated)
                                signOut(signout, context);
                              else
                                Navigator.of(context)
                                    .pushNamed(RouteName.accountDetails);
                            });
                          } else {
                            Scaffold.of(context).showSnackBar(SnackBar(
                              content: Text('You need to log in first!'),
                            ));
                          }
                        },
                        text: intl.m("Save"),
                        style: ButtonStyles.filledFull,
                      );
                    }),
                    Spacer(
                      flex: 4,
                    ),
                  ],
                );
              }),
            ),
          ),
        ),
      ),
    );
  }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...