Styled Text
परिचय
StyledText मिश्रित स्टाइल, टैप कॉलबैक, और पॉइंटर इवेंट के साथ रिच टेक्स्ट प्रदर्शित करने के लिए एक विजेट है। यह कई TextSpan चिल्ड्रन के साथ RichText विजेट के रूप में रेंडर होता है, जो आपको टेक्स्ट के प्रत्येक खंड पर बारीक नियंत्रण देता है।
StyledText दो मोड का समर्थन करता है:
- चिल्ड्रन मोड --
Textविजेट की सूची पास करें, प्रत्येक की अपनी स्टाइल के साथ - टेम्पलेट मोड -- स्ट्रिंग में
{{placeholder}}सिंटैक्स का उपयोग करें और प्लेसहोल्डर को स्टाइल और एक्शन से मैप करें
बुनियादी उपयोग
// Children mode - list of Text widgets
StyledText(
children: [
Text("Hello ", style: TextStyle(color: Colors.black)),
Text("World", style: TextStyle(color: Colors.blue, fontWeight: FontWeight.bold)),
],
)
// Template mode - placeholder syntax
StyledText.template(
"Welcome to {{Nylo}}!",
styles: {
"Nylo": TextStyle(fontWeight: FontWeight.bold, color: Colors.blue),
},
)
चिल्ड्रन मोड
स्टाइल्ड टेक्स्ट बनाने के लिए Text विजेट की सूची पास करें:
StyledText(
style: TextStyle(fontSize: 16, color: Colors.black),
children: [
Text("Your order "),
Text("#1234", style: TextStyle(fontWeight: FontWeight.bold)),
Text(" has been "),
Text("confirmed", style: TextStyle(color: Colors.green, fontWeight: FontWeight.bold)),
Text("."),
],
)
बेस style किसी भी ऐसे चाइल्ड पर लागू होती है जिसकी अपनी स्टाइल नहीं है।
पॉइंटर इवेंट
पता लगाएँ कि पॉइंटर किसी टेक्स्ट खंड पर कब प्रवेश करता है या बाहर निकलता है:
StyledText(
onEnter: (Text text, PointerEnterEvent event) {
print("Hovering over: ${text.data}");
},
onExit: (Text text, PointerExitEvent event) {
print("Left: ${text.data}");
},
children: [
Text("Hover me", style: TextStyle(color: Colors.blue)),
Text(" or "),
Text("me", style: TextStyle(color: Colors.red)),
],
)
टेम्पलेट मोड
{{placeholder}} सिंटैक्स के साथ StyledText.template() का उपयोग करें:
StyledText.template(
"By continuing, you agree to our {{Terms of Service}} and {{Privacy Policy}}.",
style: TextStyle(color: Colors.grey),
styles: {
"Terms of Service": TextStyle(color: Colors.blue, decoration: TextDecoration.underline),
"Privacy Policy": TextStyle(color: Colors.blue, decoration: TextDecoration.underline),
},
onTap: {
"Terms of Service": () => routeTo("/terms"),
"Privacy Policy": () => routeTo("/privacy"),
},
)
{{ }} के बीच का टेक्स्ट प्रदर्शन टेक्स्ट और स्टाइल और टैप कॉलबैक खोजने के लिए उपयोग की जाने वाली कुंजी दोनों है।
प्लेसहोल्डर स्टाइलिंग
प्लेसहोल्डर नामों को TextStyle ऑब्जेक्ट से मैप करें:
StyledText.template(
"Framework Version: @{{$version}}",
style: textTheme.bodyMedium,
styles: {
version: TextStyle(fontWeight: FontWeight.bold),
},
)
टैप कॉलबैक
प्लेसहोल्डर नामों को टैप हैंडलर से मैप करें:
StyledText.template(
"{{Sign up}} or {{Log in}} to continue.",
onTap: {
"Sign up": () => routeTo(SignUpPage.path),
"Log in": () => routeTo(LoginPage.path),
},
styles: {
"Sign up": TextStyle(color: Colors.blue, fontWeight: FontWeight.bold),
"Log in": TextStyle(color: Colors.blue, fontWeight: FontWeight.bold),
},
)
पाइप-सेपरेटेड कीज़
पाइप | से अलग की गई कीज़ का उपयोग करके कई प्लेसहोल्डर पर एक ही स्टाइल या कॉलबैक लागू करें:
StyledText.template(
"Available in {{English}}, {{French}}, and {{German}}.",
styles: {
"English|French|German": TextStyle(
fontWeight: FontWeight.bold,
color: Colors.blue,
),
},
onTap: {
"English|French|German": () => showLanguagePicker(),
},
)
यह तीनों प्लेसहोल्डर पर एक ही स्टाइल और कॉलबैक मैप करता है।
पैरामीटर
StyledText (चिल्ड्रन मोड)
| पैरामीटर | टाइप | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
children |
List<Text> |
आवश्यक | Text विजेट की सूची |
style |
TextStyle? |
null | सभी चिल्ड्रन के लिए बेस स्टाइल |
onEnter |
Function(Text, PointerEnterEvent)? |
null | पॉइंटर एंटर कॉलबैक |
onExit |
Function(Text, PointerExitEvent)? |
null | पॉइंटर एग्ज़िट कॉलबैक |
spellOut |
bool? |
null | अक्षर दर अक्षर टेक्स्ट प्रदर्शित करें |
softWrap |
bool |
true |
सॉफ्ट रैपिंग सक्षम करें |
textAlign |
TextAlign |
TextAlign.start |
टेक्स्ट अलाइनमेंट |
textDirection |
TextDirection? |
null | टेक्स्ट दिशा |
maxLines |
int? |
null | अधिकतम पंक्तियाँ |
overflow |
TextOverflow |
TextOverflow.clip |
ओवरफ्लो व्यवहार |
locale |
Locale? |
null | टेक्स्ट लोकेल |
strutStyle |
StrutStyle? |
null | स्ट्रट स्टाइल |
textScaler |
TextScaler? |
null | टेक्स्ट स्केलर |
selectionColor |
Color? |
null | चयन हाइलाइट रंग |
StyledText.template (टेम्पलेट मोड)
| पैरामीटर | टाइप | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
text |
String |
आवश्यक | {{placeholder}} सिंटैक्स वाला टेम्पलेट टेक्स्ट |
styles |
Map<String, TextStyle>? |
null | प्लेसहोल्डर नामों से स्टाइल का मैप |
onTap |
Map<String, VoidCallback>? |
null | प्लेसहोल्डर नामों से टैप कॉलबैक का मैप |
style |
TextStyle? |
null | गैर-प्लेसहोल्डर टेक्स्ट के लिए बेस स्टाइल |
अन्य सभी पैरामीटर (softWrap, textAlign, maxLines, आदि) चिल्ड्रन कंस्ट्रक्टर के समान हैं।
टेक्स्ट एक्सटेंशन
Nylo Website Flutter के Text विजेट को टाइपोग्राफी और यूटिलिटी मेथड से विस्तारित करता है।
टाइपोग्राफी स्टाइल
किसी भी Text विजेट पर मटीरियल डिज़ाइन टाइपोग्राफी स्टाइल लागू करें:
Text("Hello").displayLarge()
Text("Hello").displayMedium()
Text("Hello").displaySmall()
Text("Hello").headingLarge()
Text("Hello").headingMedium()
Text("Hello").headingSmall()
Text("Hello").titleLarge()
Text("Hello").titleMedium()
Text("Hello").titleSmall()
Text("Hello").bodyLarge()
Text("Hello").bodyMedium()
Text("Hello").bodySmall()
Text("Hello").labelLarge()
Text("Hello").labelMedium()
Text("Hello").labelSmall()
प्रत्येक वैकल्पिक ओवरराइड स्वीकार करता है:
Text("Welcome").headingLarge(
color: Colors.blue,
fontWeight: FontWeight.w700,
letterSpacing: 1.2,
)
उपलब्ध ओवरराइड (सभी टाइपोग्राफी मेथड के लिए समान):
| पैरामीटर | टाइप | विवरण |
|---|---|---|
color |
Color? |
टेक्स्ट रंग |
fontSize |
double? |
फ़ॉन्ट आकार |
fontWeight |
FontWeight? |
फ़ॉन्ट वज़न |
fontStyle |
FontStyle? |
इटैलिक/नॉर्मल |
letterSpacing |
double? |
अक्षर अंतर |
wordSpacing |
double? |
शब्द अंतर |
height |
double? |
पंक्ति की ऊँचाई |
decoration |
TextDecoration? |
टेक्स्ट डेकोरेशन |
decorationColor |
Color? |
डेकोरेशन रंग |
decorationStyle |
TextDecorationStyle? |
डेकोरेशन स्टाइल |
decorationThickness |
double? |
डेकोरेशन मोटाई |
fontFamily |
String? |
फ़ॉन्ट फैमिली |
shadows |
List<Shadow>? |
टेक्स्ट शैडो |
overflow |
TextOverflow? |
ओवरफ्लो व्यवहार |
यूटिलिटी मेथड
// Font weight
Text("Bold text").fontWeightBold()
Text("Light text").fontWeightLight()
// Alignment
Text("Left aligned").alignLeft()
Text("Center aligned").alignCenter()
Text("Right aligned").alignRight()
// Max lines
Text("Long text...").setMaxLines(2)
// Font family
Text("Custom font").setFontFamily("Roboto")
// Font size
Text("Big text").setFontSize(24)
// Custom style
Text("Styled").setStyle(TextStyle(color: Colors.red))
// Padding
Text("Padded").paddingOnly(left: 8, top: 4, right: 8, bottom: 4)
// Copy with modifications
Text("Original").copyWith(
textAlign: TextAlign.center,
maxLines: 2,
style: TextStyle(fontSize: 18),
)
उदाहरण
नियम और शर्तें लिंक
StyledText.template(
"By signing up, you agree to our {{Terms}} and {{Privacy Policy}}.",
style: TextStyle(color: Colors.grey.shade600, fontSize: 14),
styles: {
"Terms|Privacy Policy": TextStyle(
color: Colors.blue,
decoration: TextDecoration.underline,
),
},
onTap: {
"Terms": () => routeTo("/terms"),
"Privacy Policy": () => routeTo("/privacy"),
},
)
वर्शन प्रदर्शन
StyledText.template(
"Framework Version: {{$nyloVersion}}",
style: textTheme.bodyMedium!.copyWith(
color: NyColor(
light: Colors.grey.shade800,
dark: Colors.grey.shade200,
).toColor(context),
),
styles: {
nyloVersion: TextStyle(fontWeight: FontWeight.bold),
},
)
मिश्रित स्टाइल पैराग्राफ
StyledText(
style: TextStyle(fontSize: 16, height: 1.5),
children: [
Text("Flutter "),
Text("makes it easy", style: TextStyle(fontWeight: FontWeight.bold)),
Text(" to build beautiful apps. With "),
Text("Nylo", style: TextStyle(color: Colors.blue, fontWeight: FontWeight.bold)),
Text(", it's even faster."),
],
)
टाइपोग्राफी चेन
Text("Welcome Back")
.headingLarge(color: Colors.black)
.alignCenter()