Flutter
माइक्रो-फ्रेमवर्क
आधुनिक ऐप्स के लिए
Nylo हर प्रोजेक्ट को एक जैसी मज़बूत नींव देता है — रूटिंग, स्टेट, नेटवर्किंग, फ़ॉर्म और प्रमाणीकरण — ताकि आप पहली फ़ाइल से नहीं, पहले फ़ीचर से शुरू करें।
dart pub global activate nylo_installer
बनाने के लिए आपको जो कुछ भी चाहिए
छह स्तंभ, एक ही परंपरा। हर एक के साथ Metro जनरेटर, समझदार डिफ़ॉल्ट और एक निकास का रास्ता आता है — अंदर से यह अब भी सादा Flutter है।
राउटिंग
गार्ड्स, टाइप्ड पैरामीटर, ट्रांज़िशन और deep linking के साथ डिक्लेरेटिव रूट्स।
स्टेट प्रबंधन
कंट्रोलर, लाइफ़साइकल हुक और आसान परसिस्टेंस के साथ रिएक्टिव स्टेट।
नेटवर्किंग
स्वचालित मॉडल डिकोडिंग और रिक्वेस्ट इंटरसेप्टर के साथ API सर्विस क्लासेज़।
फॉर्म्स
फ़ील्ड एक बार घोषित करें — वैलिडेशन, कास्टिंग और डेटा बाइंडिंग साथ में आते हैं।
प्रमाणीकरण
बिना किसी ख़ास सेटअप के सेशन हैंडलिंग, टोकन स्टोरेज और रूट गार्ड्स।
Metro CLI
एक ही कमांड से पेज, मॉडल, कंट्रोलर, फ़ॉर्म और थीम बनाएँ।
टर्मिनल से कुछ भी बनाएं
Metro पेज, मॉडल, कंट्रोलर, विजेट और बहुत कुछ बनाता है — जो आपके राउटर और फ़ोल्डर संरचना से जुड़े होते हैं, किसी कोने में फेंके नहीं जाते।
class ApiService extends NyApiService {
@override
String get baseUrl => "https://api.example.com/v1";
Future<List<Post>> posts() async {
return await network(
request: (request) => request.get("/posts"),
);
}
}
// Usage in your page
final posts = await api<ApiService>((request) => request.posts());
आसान API इंटीग्रेशन
स्वचालित JSON पार्सिंग, एरर हैंडलिंग और रिक्वेस्ट इंटरसेप्टर के साथ साफ़-सुथरी, मेंटेन करने योग्य API सर्विसेज़ लिखें — आपके पेजों में Dio का दोहराव वाला कोड नहीं।
नेटवर्किंग के बारे में और जानेंउसी कोड में देखें जो आप वाकई लिखेंगे
appRouter() => nyRoutes((router) {
router.add(HomePage.path).initialRoute();
router.add(DiscoverPage.path);
router.add(LoginPage.path,
transitionType: TransitionType.bottomToTop());
router.add(ProfilePage.path,
routeGuard: [
AuthGuard()
]
);
});
अपने Flutter एप्लिकेशन के लिए जटिल रूट, इंटरफेस और UI पेज बनाएं।
अधिक जानेंउपयोगकर्ता को प्रमाणित करें
String userToken = "eyJhbG123...";
await Auth.authenticate(data: {"token": userToken});
अब, जब आपका उपयोगकर्ता ऐप खोलेगा तो वे प्रमाणित होंगे।
final userData = Auth.data();
// {"token": "eyJhbG123..."}
bool isAuthenticated = await Auth.isAuthenticated();
// true
यदि आपने अपने राउटर में authenticatedRoute सेट किया है, तो जब उपयोगकर्ता फिर से ऐप खोलेगा तो यह पेज प्रस्तुत होगा।
appRouter() => nyRoutes((router) {
...
router.add(LandingPage.path).initialRoute();
router.add(DashboardPage.path).authenticatedRoute();
// overrides the initial route when a user is authenticated
उपयोगकर्ता को लॉगआउट करें
await Auth.logout();
अपने Flutter एप्लिकेशन में उपयोगकर्ताओं को प्रमाणित करें।
अधिक जानेंफॉर्म बनाएं
metro make:form RegisterForm
अपना फॉर्म संशोधित करें
class RegisterForm extends NyFormWidget {
RegisterForm({super.key, super.submitButton, super.onSubmit, super.onFailure});
// Add your fields here
@override
fields() => [
Field.capitalizeWords("name",
label: "Name",
validator: FormValidator.notEmpty(),
),
Field.email("email_address",
label: "Email",
validator: FormValidator.email()
),
Field.password("password",
label: "Password",
validator: FormValidator.password(),
),
];
static NyFormActions get actions => const NyFormActions("RegisterForm");
}
विजेट में अपना फॉर्म उपयोग करें
@override
Widget build(BuildContext context) {
return Scaffold(
body: RegisterForm(
submitButton: Button.primary(text: "Submit"),
onSubmit: (data) {
printInfo(data);
},
),
);
}
Nylo Forms के साथ एक ही स्थान पर डेटा प्रबंधित, मान्य और सबमिट करें।
अधिक जानेंस्टेट मैनेज्ड विजेट बनाएं
metro make:stateful_widget CartIcon
class _CartIconState extends NyState<CartIcon> {
...
@override
Map<String, Function> get stateActions => {
"clear_cart": () {
_items = 0;
},
...
};
@override
Widget view(BuildContext context) {
return Container(child: Text("Items in cart: ${_items}"));
}
}
Use CartIcon.action("clear_cart")
Button.primary(text: "Add to cart",
onPressed: () {
CartIcon.action("clear_cart");
}
)
आपके Flutter एप्लिकेशन में विजेट्स के लिए शक्तिशाली स्टेट मैनेजमेंट।
अधिक जानेंअपना इवेंट बनाएं
metro make:event Logout
class LogoutEvent implements NyEvent {
@override
final listeners = {
DefaultListener: DefaultListener(),
};
}
class DefaultListener extends NyListener {
@override
handle(dynamic event) async {
// logout user
await Auth.logout();
// redirect to home page
routeTo(HomePage.path,
navigationType: NavigationType.pushAndForgetAll
);
}
}
इवेंट डिस्पैच करें
MaterialButton(child: Text("Logout"),
onPressed: () {
event<LogoutEvent>();
},
)
अपने एप्लिकेशन में इवेंट डिस्पैच करें और उन्हें सुनें।
अधिक जानेंएक बार चलाने के लिए टास्क शेड्यूल करें
Nylo.scheduleOnce("onboarding_info", () {
print("Perform code here to run once");
});
किसी विशेष तारीख के बाद एक बार चलाने के लिए टास्क शेड्यूल करें
Nylo.scheduleOnceAfterDate("app_review_rating", () {
print("Perform code to run once after DateTime(2025, 04, 10)");
}, date: DateTime(2025, 04, 10));
दैनिक एक बार चलाने के लिए टास्क शेड्यूल करें
Nylo.scheduleOnceDaily("free_daily_coins", () {
print("Perform code to run once daily");
});
अपने Flutter एप्लिकेशन में एक बार या दैनिक चलाने के लिए टास्क शेड्यूल करें।
अधिक जानेंAPI सर्विस बनाएं
metro make:api_service User
class UserApiService extends NyApiService {
@override
String get baseUrl => getEnv("API_BASE_URL");
Future<User?> fetchUser(int id) async {
return await get<User>(
"/users/$id",
queryParameters: {"include": "profile"},
);
}
Future<User?> createUser(Map<String, dynamic> data) async {
return await post<User>("/users", data: data);
}
}
अपने पेज से API कॉल करें
User? user = await api<UserApiService>(
(request) => request.fetchUser(1),
);
ऑटोमैटिक JSON पार्सिंग, कैशिंग और इंटरसेप्टर्स के साथ सुंदर API सर्विसेज।
अधिक जानेंडेटा सुरक्षित रूप से सेव करें
// Save values to secure storage
await NyStorage.save("coins", 100);
await NyStorage.save("username", "Anthony");
await NyStorage.save("isPremium", true);
// Save with TTL (auto-expires)
await NyStorage.save("session", "abc123",
expiry: Duration(hours: 1),
);
टाइप कास्टिंग के साथ पढ़ें
// Automatic type casting
String? username = await NyStorage.read("username");
int? coins = await NyStorage.read<int>("coins");
bool? isPremium = await NyStorage.read<bool>("isPremium");
// Delete a value
await NyStorage.delete("coins");
टाइप कास्टिंग, TTL एक्सपायरी और कलेक्शन के साथ सुरक्षित लोकल स्टोरेज।
अधिक जानेंअपनी भाषा फाइलें जोड़ें
{
"welcome": "Welcome",
"greeting": "Hello {{name}}",
"navigation": {
"home": "Home",
"profile": "Profile"
}
}
अपने विजेट्स में टेक्स्ट का अनुवाद करें
// Simple translation
Text("welcome".tr()) // "Welcome"
// With arguments
Text("greeting".tr(arguments: {"name": "Anthony"}))
// "Hello Anthony"
// Nested keys
Text("navigation.home".tr()) // "Home"
JSON फाइलों, आर्गुमेंट्स और RTL के साथ बहु-भाषा समर्थन।
अधिक जानेंनेविगेशन हब बनाएं
metro make:navigation_hub base
class _BaseNavigationHubState extends NavigationHub<BaseNavigationHub> {
NavigationHubLayout? layout = NavigationHubLayout.bottomNav();
@override
bool get maintainState => true;
_BaseNavigationHubState() : super(() async {
return {
0: NavigationTab(
title: "Home",
page: HomeTab(),
icon: Icon(Icons.home),
),
1: NavigationTab(
title: "Settings",
page: SettingsTab(),
icon: Icon(Icons.settings),
),
};
});
}
लेआउट आसानी से बदलें
// Bottom navigation
NavigationHubLayout.bottomNav()
// Top navigation
NavigationHubLayout.topNav()
// Journey / wizard flow
NavigationHubLayout.journey()
स्टेट मेंटेनेंस के साथ बॉटम नेव, टॉप नेव या जर्नी फ्लो बनाएं।
अधिक जानेंखुले में बनाया गया, प्रोडक्शन में इस्तेमाल होता है
“मैं Dart में नया हूँ और आपके फ़्रेमवर्क में भी — जो मुझे बहुत पसंद है।”
“Nylo Flutter के लिए सबसे अच्छा फ़्रेमवर्क है — यह डेवलपमेंट को आसान बना देता है।”
@higakijin
“अब तक का सबसे बेहतरीन फ़्रेमवर्क। शानदार गुणवत्ता और सुविधाएँ।”
@2kulfi
“यह काम को आसान और तेज़ बना देता है। बहुत बढ़िया।”
darkreader01
“मैंने अभी यह फ़्रेमवर्क खोजा और बहुत प्रभावित हूँ। धन्यवाद।”
@lepresk
“इस फ़्रेमवर्क की अवधारणा मुझे सच में बहुत पसंद है।”
@Chrisvidal
“मैं आप लोगों को इस बेहतरीन काम के लिए धन्यवाद कहना चाहता था।”
@youssefKadaouiAbbassi
“बस यह कहना था कि मुझे @nylo_dev की वेबसाइट बहुत पसंद आई!”
@esfoliante_txt
“यह अविश्वसनीय है। बहुत बढ़िया काम!”
FireflyDaniel
आपका अगला Flutter ऐप एक ही कमांड से शुरू होता है
मुफ़्त, MIT लाइसेंस के तहत, और अंदर से यह अब भी सिर्फ़ Flutter ही है।
dart pub global activate nylo_installer