এটা আমার জন্য কাজ করছে। আসলে, আমি ব্লকের সাথে কাজ করছিলাম তবে আমার সমস্যাটি ছিল লগইন স্ক্রিন ব্লক। লগআউট করার পরে এটি আপডেট হচ্ছে না। এটি পূর্ববর্তী মডেল ডেটা ধারণ করে। এমনকি, আমি ভুল এন্ট্রি প্রবেশ করিয়েছিলাম এটি হোম স্ক্রিনে যাচ্ছিল।
ধাপ 1:
Navigator.of(context).pushNamedAndRemoveUntil(
UIData.initialRoute, (Route<dynamic> route) => false);
কোথায়,
UIData.initialRoute = "/" or "/login"
ধাপ ২:
এটি স্ক্রিনটি রিফ্রেশ করার জন্য কাজ করছে। আপনি যদি ব্লকের সাথে কাজ করছেন তবে এটি খুব সহায়ক হবে।
runApp(MyApp());
কোথায়,
MyApp() is the root class.
রুট ক্লাস (অর্থাত মাই অ্যাপ) কোড
class MyApp extends StatelessWidget {
final materialApp = Provider(
child: MaterialApp(
title: UIData.appName,
theme: ThemeData(accentColor: UIColor().getAppbarColor(),
fontFamily: UIData.quickFont,
),
debugShowCheckedModeBanner: false,
initialRoute: UIData.initialRoute,
routes: {
UIData.initialRoute: (context) => SplashScreen(),
UIData.loginRoute: (context) => LoginScreen(),
UIData.homeRoute: (context) => HomeScreen(),
},
onUnknownRoute: (RouteSettings rs) => new MaterialPageRoute(
builder: (context) => new NotFoundPage(
appTitle: UIData.coming_soon,
icon: FontAwesomeIcons.solidSmile,
title: UIData.coming_soon,
message: "Under Development",
iconColor: Colors.green,
)
)));
@override
Widget build(BuildContext context) {
return materialApp;
}
}
void main() => runApp(MyApp());
এখানে আমার লগআউট পদ্ধতি,
void logout() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.clear();
Navigator.of(context).pushNamedAndRemoveUntil(
UIData.initialRoute, (Route<dynamic> route) => false);
runApp(MyApp());
}