Gerar pontos de bala em vibração
Estou tentando obter a entrada do usuário usando um textField em flutter, mas desejo considerá-la como uma lista de marcadores. Achei que teria que usar um pacote chamado flutter_markdown, mas ainda não sei como posso fazer isso. Como toda última linha deve começar automaticamente com um marcador.
Respostas
Uma maneira de fazer isso é algo assim.
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
TextEditingController tc = TextEditingController();
int currentTextLength = 0;
@override
Widget build(BuildContext context) {
return TextField(
maxLines: 4,
controller: tc,
onChanged: (String newText){
if(newText[0] != '•'){
newText = '• ' + newText;
tc.text = newText;
tc.selection = TextSelection.fromPosition(TextPosition(offset: tc.text.length));
}
if(newText[newText.length - 1] == '\n' && newText.length > currentTextLength){
tc.text = newText + '• ';
tc.selection = TextSelection.fromPosition(TextPosition(offset: tc.text.length));
}
currentTextLength = tc.text.length;
}
);
}
}
Nota: esta não é uma solução perfeita. Pois não vai colocar marcadores se você começar a editar o texto no meio do texto existente. Mas talvez isso possa lhe dar um começo em uma direção.
Se você quiser ter uma lista de marcadores de textfield, flutter_markdown pode não ser adequado para você. Uma vez que está mostrando um texto de redução.
TextFormField(
decoration: InputDecoration(
border: InputBorder.none, prefix: Text("."), // Or a Dot image
),
),
Se você deseja ter um campo de texto com função de marcadores, este pacote pode ser adequado para você:
https://pub.dev/packages/zefyr
É complicado se você escrever sozinho.
Veja seu código de exemplo para aprender a usar:
https://github.com/memspace/zefyr/tree/master/packages/zefyr/example/lib