То, что вы хотите сделать, это изменить текст, который вы передаете в текстовое поле, прежде чем передать его.
Дарт имеет метод replaceAll , который должен выполнить трюк и принятьв регулярном выражении:
Это будет выглядеть примерно так:
myinputstring.replaceAll(new RegExp(r'(?:[\t ]*(?:\r?\n|\r))+'), '\n');
, хотя вам, возможно, придется изменить регулярное выражение.Регулярное выражение ищет любую последовательность из двух или более символов новой строки (обрабатывая оба \ r, \ n и \ r \ n), а затем заменяя ее одной строкой (опять же, вы можете изменить это на \ r\ n или \ r).
Еще один способ сделать это с помощью split и join.
myinputstring
.split(new RegExp(r'(?:\r?\n|\r)'))
.where((s) => s.trim().length != 0)
.join('\n');
На этот раз мы просто разбиваем любую новую строку, а затем проверяем, чтобы увидетьесли обрезанные (чтобы избавиться от пробела) промежуточные части пусты, и если они игнорируют их, а затем присоединяют строку обратно.
Обратите внимание, что по соображениям производительности может быть хорошей идеей создатьобъект regex, сохраните его где-нибудь еще (т.е. const), а затем просто используйте его в replaceAll.Я не уверен на 100% в характеристиках регулярных выражений в dart, хотя, возможно, все будет хорошо;только мой опыт в Java говорит, что это всегда рекомендуемый подход.