स्पंदन में गोली बिंदु उत्पन्न करें
मैं फड़फड़ा में एक टेक्स्टफिल्ड का उपयोग करके उपयोगकर्ता इनपुट लेने की कोशिश कर रहा हूं, लेकिन मैं बुलेट बिंदु सूची के रूप में लेना चाहता हूं। मुझे लगा कि मुझे flutter_markdown नामक पैकेज का उपयोग करना पड़ सकता है, लेकिन मुझे अभी भी नहीं पता कि मैं ऐसा कैसे कर सकता हूं। हर अंतिम पंक्ति की तरह स्वचालित रूप से एक बुलेट के साथ शुरू होना चाहिए।
जवाब
ऐसा करने का एक तरीका कुछ इस तरह है।
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;
}
);
}
}
नोट: यह एक सही समाधान नहीं है। जैसे कि यदि आप पाठ को मौजूदा पाठ के बीच में संपादित करना शुरू नहीं करते हैं तो यह बुलेट पॉइंट नहीं डालेगा। लेकिन शायद यह आपको एक दिशा में एक शुरुआत दे सकता है।
यदि आप टेक्स्टफील्ड की बुलेट बिंदु सूची चाहते हैं, तो flutter_markdown आपके लिए उपयुक्त नहीं हो सकता है। चूंकि यह एक मार्कडाउन टेक्स्ट दिखा रहा है।
TextFormField(
decoration: InputDecoration(
border: InputBorder.none, prefix: Text("."), // Or a Dot image
),
),
यदि आप एक टेक्स्ट फ़ील्ड रखना चाहते हैं जिसमें बुलेट पॉइंट फ़ंक्शन हैं, तो यह पैकेज आपके लिए उपयुक्त हो सकता है:
https://pub.dev/packages/zefyr
यदि आप इसे अपने दम पर लिखते हैं तो यह जटिल है।
उपयोग करने का तरीका जानने के लिए इसके उदाहरण कोड को देखें:
https://github.com/memspace/zefyr/tree/master/packages/zefyr/example/lib