Flutter'da mermi noktaları oluşturun
Flutter'da bir textField kullanarak kullanıcı girişi almaya çalışıyorum, ancak bir madde işareti listesi olarak almak istiyorum. Flutter_markdown adlı bir paket kullanmam gerekebileceğini düşündüm, ancak bunu nasıl yapabileceğimi hala bilmiyorum. Her son satırın otomatik olarak bir mermiyle başlaması gerektiği gibi.
Yanıtlar
Bunu yapmanın bir yolu şuna benzer bir şeydir.
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;
}
);
}
}
Not: Bu mükemmel bir çözüm değildir. Mevcut metnin ortasında metni düzenlemeye başlarsanız, madde işaretleri koymayacaktır. Ama belki bu size bir yönde bir başlangıç sağlayabilir.
Metin alanı madde işaretli bir listeye sahip olmak istiyorsanız, flutter_markdown sizin için uygun olmayabilir. Bir işaretleme metni gösterdiğinden.
TextFormField(
decoration: InputDecoration(
border: InputBorder.none, prefix: Text("."), // Or a Dot image
),
),
Madde işareti işlevi olan bir metin alanına sahip olmak istiyorsanız, bu paket size uygun olabilir:
https://pub.dev/packages/zefyr
Kendi başınıza yazarsanız karmaşıktır.
Nasıl kullanılacağını öğrenmek için örnek koduna bakın:
https://github.com/memspace/zefyr/tree/master/packages/zefyr/example/lib