Advertisement
sourav8256

Name input page

Jul 29th, 2023
1,471
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 2.85 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import 'package:shared_preferences/shared_preferences.dart';
  3.  
  4. void main() {
  5.   runApp(MyApp());
  6. }
  7.  
  8. class MyApp extends StatelessWidget {
  9.   @override
  10.   Widget build(BuildContext context) {
  11.     return MaterialApp(
  12.       home: FutureBuilder(
  13.         future: _getUserName(),
  14.         builder: (context, snapshot) {
  15.           if (snapshot.connectionState == ConnectionState.waiting) {
  16.             return Scaffold(
  17.               body: Center(
  18.                 child: CircularProgressIndicator(),
  19.               ),
  20.             );
  21.           } else {
  22.             return snapshot.hasData ? ChatPage(snapshot.data) : HomePage();
  23.           }
  24.         },
  25.       ),
  26.     );
  27.   }
  28.  
  29.   // Function to get the user name from Shared Preferences
  30.   Future<String?> _getUserName() async {
  31.     SharedPreferences prefs = await SharedPreferences.getInstance();
  32.     return prefs.getString('user_name');
  33.   }
  34. }
  35.  
  36. class HomePage extends StatefulWidget {
  37.   @override
  38.   _HomePageState createState() => _HomePageState();
  39. }
  40.  
  41. class _HomePageState extends State<HomePage> {
  42.   final TextEditingController _nameController = TextEditingController();
  43.  
  44.   @override
  45.   Widget build(BuildContext context) {
  46.     return Scaffold(
  47.       appBar: AppBar(
  48.         title: Text('User Name Page'),
  49.       ),
  50.       body: Padding(
  51.         padding: const EdgeInsets.all(16.0),
  52.         child: Column(
  53.           mainAxisAlignment: MainAxisAlignment.center,
  54.           crossAxisAlignment: CrossAxisAlignment.stretch,
  55.           children: [
  56.             TextField(
  57.               controller: _nameController,
  58.               decoration: InputDecoration(
  59.                 labelText: 'Enter your name',
  60.               ),
  61.             ),
  62.             SizedBox(height: 16.0),
  63.             ElevatedButton(
  64.               onPressed: () async {
  65.                 String name = _nameController.text.trim();
  66.                 if (name.isNotEmpty) {
  67.                   await _saveUserName(name);
  68.                   Navigator.pushReplacement(
  69.                     context,
  70.                     MaterialPageRoute(builder: (context) => ChatPage(name)),
  71.                   );
  72.                 }
  73.               },
  74.               child: Text('Save'),
  75.             ),
  76.           ],
  77.         ),
  78.       ),
  79.     );
  80.   }
  81.  
  82.   // Function to save the user name in Shared Preferences
  83.   Future<void> _saveUserName(String userName) async {
  84.     SharedPreferences prefs = await SharedPreferences.getInstance();
  85.     await prefs.setString('user_name', userName);
  86.   }
  87. }
  88.  
  89. class ChatPage extends StatelessWidget {
  90.   final String userName;
  91.  
  92.   ChatPage(this.userName);
  93.  
  94.   @override
  95.   Widget build(BuildContext context) {
  96.     return Scaffold(
  97.       appBar: AppBar(
  98.         title: Text('Chat Page'),
  99.       ),
  100.       body: Center(
  101.         child: Text('Welcome to the Chat, $userName!'),
  102.       ),
  103.     );
  104.   }
  105. }
  106.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement