提交 6dc3621c 编写于 作者: 徐群-ios's avatar 徐群-ios

登录页面

上级 16eba0c4
...@@ -2,4 +2,7 @@ ...@@ -2,4 +2,7 @@
class AssetImages { class AssetImages {
static const right_arrow = 'assets/multiImgs/right_arrow.png'; static const right_arrow = 'assets/multiImgs/right_arrow.png';
static const login_background = 'assets/multiImgs/login_background.png';
static const login_close = 'assets/multiImgs/login_close.png';
static const input_clear = 'assets/multiImgs/input_clear.png';
} }
...@@ -240,7 +240,9 @@ class _ProductSliverBuilderDelegate extends SliverChildBuilderDelegate { ...@@ -240,7 +240,9 @@ class _ProductSliverBuilderDelegate extends SliverChildBuilderDelegate {
widget = GestureDetector( widget = GestureDetector(
child: container, child: container,
onTap: () { onTap: () {
context.go('/product_detail'); context.pushNamed('product_detail');
// context.push('/product_detail');
// context.go('/product_detail');
}, },
); );
} else { } else {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:my_app2/Login/ViewModel/UserViewModel.dart'; import 'package:my_app2/Login/ViewModel/UserViewModel.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:my_app2/Assets/AssetImages.dart';
class LoginScreen extends StatelessWidget { class LoginScreen extends StatelessWidget {
const LoginScreen({super.key}); const LoginScreen({super.key});
...@@ -8,7 +10,18 @@ class LoginScreen extends StatelessWidget { ...@@ -8,7 +10,18 @@ class LoginScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar(title: const Text('登陆')), appBar: AppBar(
backgroundColor: Colors.transparent,
leading: IconButton(
icon: const Image(
image: AssetImage(AssetImages.login_close),
),
onPressed: () {
context.pop();
},
),
),
extendBodyBehindAppBar: true,
body: _LoginScreenImp(), body: _LoginScreenImp(),
); );
} }
...@@ -20,24 +33,60 @@ class _LoginScreenImp extends StatefulWidget { ...@@ -20,24 +33,60 @@ class _LoginScreenImp extends StatefulWidget {
} }
class _LoginScreenImpState extends State<_LoginScreenImp> { class _LoginScreenImpState extends State<_LoginScreenImp> {
Widget _buildHead(BuildContext context) {
double height = MediaQuery.of(context).size.width * (283.0 / 375.0);
return SizedBox(
height: height,
child: Stack(
fit: StackFit.expand,
clipBehavior: Clip.hardEdge,
children: const [
Image(
fit: BoxFit.fill,
image: AssetImage(AssetImages.login_background)),
Positioned(
left: 35,
bottom: 97,
child: Text(
'APP登录',
style: TextStyle(fontSize: 26, fontWeight: FontWeight.w600),
))
]),
);
}
// IconButton(
// icon: const Image(
// image: AssetImage(AssetImages.input_clear),
// ),
// // ignore: avoid_print
// onPressed: () => print('hello world'),
// )
Widget _phoneTextFiled(BuildContext context) {
return Container(
height: 50,
margin: const EdgeInsets.symmetric(horizontal: 36),
decoration: const BoxDecoration(
color: Colors.blue,
border: Border(bottom: BorderSide(color: Color(0xFF1A1A1A)))),
child: TextField(
decoration: InputDecoration(
fillColor: Colors.yellow,
hintText: '请输入手机号',
border: InputBorder.none,
filled: true,
suffix: Container(
width: 20,
height: 50,
color: Colors.red,
))),
);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Center( return SingleChildScrollView(
child: Column( child: Column(children: [_buildHead(context), _phoneTextFiled(context)]),
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () {
// log a user in, letting all the listeners know
context.read<UserViewModel>().login('test-user');
// router will automatically redirect from /login to / using
// refreshListenable
},
child: const Text('Login'),
),
],
),
); );
} }
} }
...@@ -34,6 +34,7 @@ class AppRoot extends StatelessWidget { ...@@ -34,6 +34,7 @@ class AppRoot extends StatelessWidget {
builder: (context, state) => const _AppImp(), builder: (context, state) => const _AppImp(),
routes: <RouteBase>[ routes: <RouteBase>[
GoRoute( GoRoute(
name: 'product_detail',
path: Routes.productDetail, path: Routes.productDetail,
builder: (context, state) => const ProductDetailScreen(), builder: (context, state) => const ProductDetailScreen(),
), ),
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册