【发布时间】:2021-12-03 11:19:02
【问题描述】:
我刚开始学习 Flutter 的一些教程,但我有一件事要存档。我在代码中定位图像时遇到问题。这就是问题所在。
.
如果有人可以重新编码,因为我尝试了 2 天并且无法理解它是如何工作的。
我试图找到的解决方案是将徽标下的图像放置在右上角而不移动徽标和文本栏
我想要的草稿:
我的代码:
main.dart
import 'package:flutter/material.dart';
import 'package:kafe/screens/login_screen.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Email and Password Login',
theme: ThemeData(
primarySwatch: Colors.brown,
),
home: LoginScreen(),
);
}
}
login_screen.dart
import 'package:flutter/material.dart';
class LoginScreen extends StatefulWidget {
const LoginScreen({ Key? key }) : super(key: key);
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
// form key
final _formKey = GlobalKey<FormState>();
// Editing Controller
final TextEditingController emailController = new TextEditingController();
final TextEditingController passwordController = new TextEditingController();
final TextEditingController locationController = new TextEditingController();
@override
Widget build(BuildContext context) {
//Name field
final emailField = TextFormField(
autofocus: false,
controller: emailController,
keyboardType: TextInputType.emailAddress,
//validator: {} {},
onSaved: (value)
{
emailController.text = value!;
},
textInputAction: TextInputAction.next,
decoration: InputDecoration(
prefixIcon: Icon(Icons.account_circle_outlined),
contentPadding: EdgeInsets.fromLTRB(20, 15, 20, 15),
hintText: "Вашето име",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
),
),
);
//password field
final passwordField = TextFormField(
autofocus: false,
controller: passwordController,
//validator: {} {},
onSaved: (value)
{
passwordController.text = value!;
},
textInputAction: TextInputAction.next,
decoration: InputDecoration(
prefixIcon: Icon(Icons.call_end_outlined),
contentPadding: EdgeInsets.fromLTRB(20, 15, 20, 15),
hintText: "Вашиот телефонски број",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
),
),
);
//Location field
final locationField = TextFormField(
autofocus: false,
controller: locationController,
//validator: {} {},
onSaved: (value)
{
locationController.text = value!;
},
textInputAction: TextInputAction.done,
decoration: InputDecoration(
prefixIcon: Icon(Icons.add_location_alt_outlined),
contentPadding: EdgeInsets.fromLTRB(20, 15, 20, 15),
hintText: "Вашата локација",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
),
)),
// button
loginButton = Material(
elevation: 5,
borderRadius: BorderRadius.circular(30),
color: Colors.redAccent,
child: MaterialButton(
padding: EdgeInsets.fromLTRB(20, 15, 20, 15),
minWidth: MediaQuery.of(context).size.width,
onPressed: () {},
child: Text(
"Логирање",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 20,
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
),
);
return Scaffold(
backgroundColor: Colors.white,
body: Center(
child: SingleChildScrollView(
child: Container(
color: Colors.white,
child: Padding(
padding: const EdgeInsets.all(35.0),
child: Form(
key: _formKey,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget> [
SizedBox(
width: 130,
child: SizedBox(
child: Image.asset("assets/top.png",
fit: BoxFit.contain,
),
),
),
SizedBox(
height: 250,
child: Image.asset(
"assets/logo.png",
fit: BoxFit.contain,
)
),
emailField,
SizedBox(height: 30),
passwordField,
SizedBox(height: 30),
locationField,
SizedBox(height: 30),
loginButton,
SizedBox(height: 30),
],
),
),
),
),
) ,
),
);
}
}
【问题讨论】:
标签: flutter dart flutter-layout