Flutter UI组件插件cotton_candy_ui的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter UI组件插件cotton_candy_ui的使用

Cotton Candy UI 是一个用于美化您的应用界面的UI包。此UI包基于 Shiban 的设计系统。

开始使用

添加依赖

在你的项目中添加 cotton_candy_ui 包。打开终端并运行以下命令:

$ flutter pub add cotton_candy_ui

这将会在你的 pubspec.yaml 文件中添加一行类似如下的依赖项:

dependencies:
  cotton_candy_ui: ^0.2.0

或者,你可以直接编辑 pubspec.yaml 文件来添加该依赖项。

导入库

在 Dart 代码中导入 cotton_candy_ui 库:

import 'package:cotton_candy_ui/cotton_candy_ui.dart';

示例代码

以下是一个完整的示例代码,展示了如何使用 cotton_candy_ui 中的一些组件:

import 'package:flutter/material.dart';
import 'package:cotton_candy_ui/cotton_candy_ui.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final String title = "Cotton Candy UI Example";
  late FixedExtentScrollController hourScrollController;
  late FixedExtentScrollController minuteScrollController;
  late FixedExtentScrollController ampmScrollController;

  [@override](/user/override)
  void initState() {
    // 初始化时钟控制器
    hourScrollController = FixedExtentScrollController(
        initialItem: (TimeOfDay.now().hour > 11)
            ? TimeOfDay.now().hour - 12
            : TimeOfDay.now().hour);
    minuteScrollController =
        FixedExtentScrollController(initialItem: TimeOfDay.now().minute);
    ampmScrollController = FixedExtentScrollController(
        initialItem: (TimeOfDay.now().hour > 11) ? 1 : 0);
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.grey[300],
      appBar: AppBar(
        title: Text(
          title,
          style: const TextStyle(color: Colors.black),
        ),
        backgroundColor: Colors.white,
      ),
      body: SingleChildScrollView(
        child: Center(
          child: Column(
            children: [
              const SizedBox(height: 10),

              // 使用 CandyTextField 组件
              CandyTextField(
                prefixIcon: const Text(
                  '출발',
                  style: TextStyle(
                      color: CandyColors.candyPink,
                      fontSize: 15,
                      fontWeight: FontWeight.bold),
                ),
                hintText: '내용을 입력해주세요!',
                hintStyle: const TextStyle(
                    color: Colors.grey,
                    fontSize: 15,
                    fontWeight: FontWeight.bold),
                onChanged: (value) {},
              ),

              const SizedBox(height: 5),

              // 使用 CandyRadioButton 组件
              CandyRadioButton(
                radioComponents: const ['최단경로', '지하철', '버스'],
                onChanged: (value) {},
              ),
              const SizedBox(height: 5),

              // 使用 CandyTimePicker 组件
              CandyTimePicker(
                hourScrollController: hourScrollController,
                minuteScrollController: minuteScrollController,
                ampmScrollController: ampmScrollController,
                height: 63,
                onChanged: (hour, minute) {
                  // print(hour.toString() + ' : ' + minute.toString());
                },
              ),

              // 使用 CandyDayOfTheWeek 组件
              CandyDayOfTheWeek(
                borderWidth: 1,
                onChanged: (value) {},
              ),
              const SizedBox(height: 5),

              // 使用 CandyTimeLine 组件
              Container(
                padding: const EdgeInsets.fromLTRB(40, 0, 40, 0),
                child: const CandyTimeLine(
                  children: [
                    CandyIndicator(
                      child: Text(
                        '출발',
                        style: TextStyle(
                          color: Color(0xFFFFFFFF),
                          fontWeight: FontWeight.w800,
                        ),
                      ),
                      title: Text('집'),
                    ),
                    CandyIndicator(
                      child: Icon(
                        Icons.directions_run,
                        color: Colors.white,
                      ),
                      title: Text('도보 20분'),
                      subTitle: Text('12km'),
                    ),
                    CandyIndicator(
                      child: Icon(
                        Icons.directions_bus,
                        color: Colors.white,
                      ),
                      title: Text('마석역'),
                      subTitle: Text('경춘선'),
                    ),
                    CandyIndicator(
                      child: Text(
                        '도착',
                        style: TextStyle(
                          color: Color(0xFFFFFFFF),
                        ),
                      ),
                      title: Text('광운대역'),
                      subTitle: Text('1호선'),
                    ),
                  ],
                  connector: CandyConnector(),
                ),
              ),

              // 使用 CandyButton 组件
              CandyButton(
                child: const Text(
                  '나의 시작길 입력하기',
                  style: TextStyle(
                    color: Color(0xFFFFFFFF),
                    fontWeight: FontWeight.w800,
                  ),
                ),
                onPressed: () {
                  // 外部控制时间选择器
                  ampmScrollController.animateToItem(1,
                      duration: const Duration(milliseconds: 400),
                      curve: Curves.ease);
                  hourScrollController.animateToItem(2,
                      duration: const Duration(milliseconds: 400),
                      curve: Curves.ease);
                  minuteScrollController.animateToItem(60,
                      duration: const Duration(milliseconds: 400),
                      curve: Curves.ease);
                },
              ),
              const SizedBox(height: 10),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter UI组件插件cotton_candy_ui的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter UI组件插件cotton_candy_ui的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用cotton_candy_ui插件的示例代码。cotton_candy_ui是一个提供丰富UI组件的Flutter插件,可以帮助开发者快速构建美观的用户界面。

首先,确保你已经在pubspec.yaml文件中添加了cotton_candy_ui依赖:

dependencies:
  flutter:
    sdk: flutter
  cotton_candy_ui: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中导入cotton_candy_ui并使用其中的组件。以下是一个简单的示例,展示了如何使用cotton_candy_ui中的几个组件:

import 'package:flutter/material.dart';
import 'package:cotton_candy_ui/cotton_candy_ui.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Cotton Candy UI Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Cotton Candy UI Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 使用CCButton组件
            CCButton(
              text: 'Click Me',
              onPressed: () {
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Button Clicked!')),
                );
              },
            ),
            SizedBox(height: 20),

            // 使用CCTextField组件
            CCTextField(
              labelText: 'Enter your name',
              onChanged: (value) {
                // 在这里处理文本变化
              },
            ),
            SizedBox(height: 20),

            // 使用CCCheckbox组件
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                CCCheckbox(
                  value: true, // 初始值
                  onChanged: (value) {
                    // 在这里处理复选框变化
                    print('Checkbox value: $value');
                  },
                ),
                Text('Accept Terms and Conditions'),
              ],
            ),
            SizedBox(height: 20),

            // 使用CCRadio组件
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                CCRadio(
                  groupValue: 1, // 当前选中的值
                  value: 1,
                  onChanged: (value) {
                    // 在这里处理单选按钮变化
                    print('Radio selected: $value');
                  },
                ),
                Text('Option 1'),
                SizedBox(width: 20),
                CCRadio(
                  groupValue: 1,
                  value: 2,
                  onChanged: (value) {
                    print('Radio selected: $value');
                  },
                ),
                Text('Option 2'),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们展示了如何使用cotton_candy_ui提供的CCButtonCCTextFieldCCCheckboxCCRadio组件。这些组件提供了丰富的样式和交互功能,使得构建用户界面变得更加简单和高效。

请注意,cotton_candy_ui插件的具体API和组件可能会随着版本的更新而有所变化,因此建议查阅最新的官方文档以获取最准确的信息。

回到顶部