#flutter #dart
#трепетать #дротик
Вопрос:
я использую CupertinoDatePicker для получения дня рождения пользователя, но я попытался отправить это значение (рождение) со страницы DatePicker на другую страницу или в другой класс, я не хочу использовать Навигатор для его отправки !
Если лучшее решение-разместить два кода на одной странице, это не проблема. спасибо вам за вашу помощь..
Код страницы Sginin:
class SignInScreen extends StatefulWidget { SignInScreen({Key? key}) : super(key: key); static String routeName = "/SignInScreen"; @override _SignInScreenState createState() =gt; _SignInScreenState(); } class _SignInScreenState extends Statelt;SignInScreengt; { @override Widget build(BuildContext context) { //size screen Size size = MediaQuery.of(context).size; return WillPopScope( child: SafeArea( child: Scaffold( body: pageSP(), ), ), onWillPop: () { return showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return AlertDialog( title: Text("Confirm Exit"), content: Text("Are you sure you want to exit?"), actions: lt;Widgetgt;[ TextButton( child: Text("YES"), onPressed: () { SystemNavigator.pop(); }, ), TextButton( child: Text("NO"), onPressed: () { Navigator.of(context).pop(); }, ) ], ); }).then((value) =gt; value as bool); }, ); } Widget pageSP(){ Size size = MediaQuery.of(context).size; return Consumerlt;ConnectivityProvidergt;(builder: (context,model,child){ return model.isOnline? Container( decoration: BoxDecoration( color: mPrimaryColor, // gradient: mPrimaryGradientColor, ), height: size.height, width: size.width, child: Stack( children: lt;Widgetgt;[ SingleChildScrollView( // reverse: true, child: Container( margin: EdgeInsets.only( top: size.height * 0.015, right: size.height * 0.035, left: size.height * 0.035), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( height: size.height * 0.025, ), Container( child: InkWell( onTap: () { setState(() { showSignIn = !showSignIn; }); }, child: Image( color: white, image: AssetImage('assets/images/AppIcon.png'), height: size.height * 0.20, ), ), ), Text( "$birth"), ], ), ), ) ], ), ): Container( child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [ Center( child: CircularProgressIndicator(), ), SizedBox(height: 25,), Text("Checking your internet Connection") ], ), ); }); }
Страница выбора даты :
class _MyDatePackerState extends Statelt;MyDatePackergt; { DateTime dateTime = DateTime.now(); DateTime? selectedDate; bool showDate = false; @override Widget build(BuildContext context) { Size size = MediaQuery.of(context).size; return SizedBox( height: 350, child: Column( children: [ Container( width: size.width * 0.9, height: 200, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(12)), boxShadow: [ BoxShadow(color: Colors.redAccent, spreadRadius: 0.05) ]), child: CupertinoDatePicker( initialDateTime: dateTime, minimumYear: 1940, maximumYear: DateTime.now().year, mode: CupertinoDatePickerMode.date, onDateTimeChanged: (value) { setState(() { selectedDate = value; showDate = true; }); }), ), SizedBox( height: 10, ), SizedBox( height: size.height * 0.06, width: size.width * 0.9, child: ElevatedButton( onPressed: () { if (selectedDate != null) { final birth = DateFormat('dd-MM-yyyy').format(selectedDate!); print(birth); Navigator.pop(context); }else{ showDialogAll(context,"hata","please chosse ya baby"); print("eror"); } }, style: ElevatedButton.styleFrom( primary: white, shape: new RoundedRectangleBorder( borderRadius: new BorderRadius.circular(10), ), ), child: Text( "OK", style: TextStyle( color: Sin_Login, fontSize: 20, fontWeight: FontWeight.w100, ), )), ), ], ), ); } }
спасибо вам за вашу помощь..