centos

centos下flutter UI布局怎么实现

小樊
43
2025-09-03 21:41:48
栏目: 智能运维

在CentOS系统下,使用Flutter进行UI布局主要依赖于Dart语言和Flutter框架提供的各种布局组件。以下是一些基本的UI布局组件和示例代码,帮助你在Flutter中创建用户界面。

1. 基本布局组件

1.1 行(Row)

Row组件用于水平排列子组件。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Row Layout'),
        ),
        body: Center(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Container(
                width: 50,
                height: 50,
                color: Colors.red,
              ),
              Container(
                width: 50,
                height: 50,
                color: Colors.green,
              ),
              Container(
                width: 50,
                height: 50,
                color: Colors.blue,
              ),
            ],
          ),
        ),
      ),
    );
  }
}

1.2 列(Column)

Column组件用于垂直排列子组件。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Column Layout'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Container(
                width: 50,
                height: 50,
                color: Colors.red,
              ),
              Container(
                width: 50,
                height: 50,
                color: Colors.green,
              ),
              Container(
                width: 50,
                height: 50,
                color: Colors.blue,
              ),
            ],
          ),
        ),
      ),
    );
  }
}

1.3 堆叠(Stack)

Stack组件用于将多个子组件堆叠在一起。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Stack Layout'),
        ),
        body: Center(
          child: Stack(
            children: <Widget>[
              Container(
                width: 100,
                height: 100,
                color: Colors.red,
              ),
              Container(
                width: 100,
                height: 100,
                color: Colors.green,
                alignment: Alignment.center,
                child: Text('Green'),
              ),
              Container(
                width: 100,
                height: 100,
                color: Colors.blue,
                alignment: Alignment.bottomRight,
                child: Text('Blue'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

2. 布局约束

Flutter提供了多种布局约束来控制子组件的大小和位置。

2.1 Expanded

Expanded组件用于在RowColumn中分配剩余空间。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Expanded Layout'),
        ),
        body: Center(
          child: Row(
            children: <Widget>[
              Expanded(
                flex: 1,
                child: Container(
                  color: Colors.red,
                ),
              ),
              Expanded(
                flex: 2,
                child: Container(
                  color: Colors.green,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

2.2 Flexible

Flexible组件与Expanded类似,但提供了更多的灵活性。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flexible Layout'),
        ),
        body: Center(
          child: Row(
            children: <Widget>[
              Flexible(
                fit: FlexFit.loose,
                child: Container(
                  color: Colors.red,
                ),
              ),
              Flexible(
                fit: FlexFit.loose,
                child: Container(
                  color: Colors.green,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

3. 响应式布局

Flutter提供了多种方式来实现响应式布局,例如使用MediaQuery获取屏幕尺寸,使用LayoutBuilder根据父组件的约束来构建子组件。

3.1 MediaQuery

MediaQuery可以获取屏幕的尺寸、方向等信息。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('MediaQuery Example'),
        ),
        body: Center(
          child: Container(
            color: Colors.blue,
            child: Text(
              'Screen Width: ${MediaQuery.of(context).size.width}',
              style: TextStyle(color: Colors.white),
            ),
          ),
        ),
      ),
    );
  }
}

3.2 LayoutBuilder

LayoutBuilder可以根据父组件的约束来构建子组件。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('LayoutBuilder Example'),
        ),
        body: Center(
          child: LayoutBuilder(
            builder: (context, constraints) {
              if (constraints.maxWidth < 300) {
                return Container(
                  color: Colors.red,
                  child: Center(child: Text('Small Screen')),
                );
              } else {
                return Container(
                  color: Colors.blue,
                  child: Center(child: Text('Large Screen')),
                );
              }
            },
          ),
        ),
      ),
    );
  }
}

通过这些基本的布局组件和技巧,你可以在CentOS系统下使用Flutter创建各种复杂的用户界面。希望这些示例对你有所帮助!

0
看了该问题的人还看了