Flutter UI 기초-레이 어드 레이아웃 Stack 사용
3895 단어 Flutter
원형 그림 에 배경 이 있 는 텍스트 를 추가 합 니 다.Row Widget 이나 Column Widget 을 사용 하면 실현 할 수 없습니다.이 럴 때 Stack Widget,즉 레이 어드 레이아웃 을 사용 해 야 합 니 다.직접 코드 올 리 기:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Layout Widget',
home: Scaffold(
appBar: AppBar(
title: Text('Stack Widget'),
backgroundColor: Colors.deepPurple,
),
body: Center(
child: Mystack(),
),
),
);
}
}
class Mystack extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Stack(
children: [
CircleAvatar(
backgroundImage: NetworkImage(
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1554199381&di=e3a6604c718d6304e4912f5a7d8e6d2f&imgtype=jpg&er=1&src=http%3A%2F%2Fimg.11665.com%2Fimg1_p3%2Fi3%2F1918445441%2FTB20kv.dlDH8KJjSszcXXbDTFXa_%21%211918445441.jpg'),
radius: 100,
),
Container(
child: Text(
' — ',
style: TextStyle(fontSize: 18, color: Colors.white),
),
decoration: BoxDecoration(color: Colors.blueAccent),
padding: EdgeInsets.fromLTRB(5.0, 0, 5.0, 0),
)
],
alignment: const FractionalOffset(0.5, 0.9),
);
}
}
코드 분석:
Mystack
클래스 가 되 돌아 오 는 구성 요 소 는Stack()
입 니 다.구성 요소 배열 도 필요 합 니 다.여기 서 우 리 는CircleAvatar
과Container
를 사용 했다.컨테이너 용기 구성 요소,텍스트 구성 요소)CircleAvatar 구성 요소
CircleAvatar
구성 요 소 는 이미지 컨트롤 에 자주 사 용 됩 니 다.구성 요소 안에 radius 의 값 이 있 으 면 그림 의 라디에이터 를 설정 할 수 있 습 니 다.지금 우 리 는 그림 을 넣 은 후에 호 도 를 100 으로 설정 하여 아름 다운 원형 을 만 들 려 고 합 니 다.코드 는 다음 과 같 습 니 다.CircleAvatar(
backgroundImage: NetworkImage( 'url'),
radius: 100,
),
레이 어드 레이아웃 의 alignment 속성
alignment: const FractionalOffset(0.5, 0.9),
alignment 속성 은 레이 어드 위 치 를 제어 하 는 것 이 므 로 두 가지 내용 을 레이 어드 할 때 사용 하 는 것 을 권장 합 니 다.그것 은 두 개의 값 X 축 거리 와 Y 축 거 리 를 가지 고 있 으 며,값 은 0 에서 1 까지 이 며,모두 상층 용기 의 왼쪽 상단 에서 부터 계산한다.위치 속성
두 구성 요소 의 중첩 을 초과 하면 alignment 속성 은 수 요 를 만족 시 키 지 못 하고 Positioned 속성 을 사용 해 야 합 니 다.그래서 이 구성 요 소 는 레이 어드 포 지 셔 닝 구성 요소 라 고도 합 니 다.
class Mystack extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Stack(
children: [
CircleAvatar(
backgroundImage: NetworkImage(
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1554199381&di=e3a6604c718d6304e4912f5a7d8e6d2f&imgtype=jpg&er=1&src=http%3A%2F%2Fimg.11665.com%2Fimg1_p3%2Fi3%2F1918445441%2FTB20kv.dlDH8KJjSszcXXbDTFXa_%21%211918445441.jpg'),
radius: 100,
),
Positioned(
top: 20.0,
left: 50.0,
child: Container(
child: Text(
' — ',
style: TextStyle(fontSize: 18, color: Colors.white),
),
decoration: BoxDecoration(color: Colors.blueAccent),
padding: EdgeInsets.fromLTRB(5.0, 0, 5.0, 0),
)),
Positioned(
child: Text(
' ',
style: TextStyle(color: Colors.white, fontSize: 18),
),
bottom: 10,
right: 60,
)
],
// alignment: const FractionalOffset(0.5, 0.9),
);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Flutter】DateTime 전월의 일수를 취득한다달의 일수를 취득할 필요가 있어, 의외로 수요 있을까라고 생각했으므로 비망록 정도에 남겨 둡니다. DateTime 날짜에 0을 입력하면 전월 DateTime이 됩니다. 2021년 3월 0일 = 2021년 2월 28일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.