Skip to content

๐Ÿš€ 60+ ไธ“ไธš็ป„ไปถ โ€ข ๐ŸŽจ ่ฎพ่ฎก็ณป็ปŸ โ€ข ๐Ÿ“ฑ ๅ“ๅบ”ๅผ โ€ข โ™ฟ ๆ— ้šœ็ข โ€ข โšก ้ซ˜ๆ€ง่ƒฝ

License

Notifications You must be signed in to change notification settings

Agions/zephyr-ui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

ZephyrUI

ZephyrUI Logo

ไผไธš็บง Flutter UI ็ป„ไปถๅบ“

Flutter Dart License Version Platform

Stars Forks Issues PRs

๐Ÿš€ 60+ ไธ“ไธš็ป„ไปถ โ€ข ๐ŸŽจ ่ฎพ่ฎก็ณป็ปŸ โ€ข ๐Ÿ“ฑ ๅ“ๅบ”ๅผ โ€ข โ™ฟ ๆ— ้šœ็ข โ€ข โšก ้ซ˜ๆ€ง่ƒฝ


๐Ÿ“‹ ็›ฎๅฝ•


โœจ ็‰นๆ€งๆฆ‚่งˆ

๐ŸŽจ ่ฎพ่ฎก็ณป็ปŸ

  • ็ปŸไธ€ไธป้ข˜๏ผšMaterial Design 3 ่ง„่Œƒ
  • ้ซ˜ๅบฆๅฏๅฎšๅˆถ๏ผš็ตๆดป็š„ไธป้ข˜้…็ฝฎ
  • ๆš—่‰ฒๆจกๅผ๏ผšๅฎŒๆ•ด็š„ๆทฑ่‰ฒไธป้ข˜ๆ”ฏๆŒ
  • ่ฎพ่ฎกไปค็‰Œ๏ผšไธ€่‡ด็š„่ฎพ่ฎก่ฏญ่จ€

๐Ÿ“ฑ ๅ“ๅบ”ๅผ่ฎพ่ฎก

  • ๅคš็ซฏ้€‚้…๏ผš็งปๅŠจ็ซฏใ€ๅนณๆฟใ€ๆกŒ้ข็ซฏ
  • ๆ–ญ็‚น็ณป็ปŸ๏ผšๆ™บ่ƒฝๅธƒๅฑ€ๅˆ‡ๆข
  • ่‡ช้€‚ๅบ”็ป„ไปถ๏ผšๆ นๆฎๅฑๅน•ๅฐบๅฏธไผ˜ๅŒ–
  • ๅผนๆ€งๅธƒๅฑ€๏ผšๅผบๅคง็š„็ฝ‘ๆ ผ็ณป็ปŸ

โ™ฟ ๆ— ้šœ็ขๆ”ฏๆŒ

  • ๅฑๅน•้˜…่ฏปๅ™จ๏ผšๅฎŒๆ•ด็š„่ฏญไน‰ๅŒ–ๆ ‡่ฎฐ
  • ้”ฎ็›˜ๅฏผ่ˆช๏ผšๅ…จ้”ฎ็›˜ๆ“ไฝœๆ”ฏๆŒ
  • ้ซ˜ๅฏนๆฏ”ๅบฆ๏ผšWCAG AA ๆ ‡ๅ‡†ๅˆ่ง„
  • ็„ฆ็‚น็ฎก็†๏ผšๆ™บ่ƒฝ็„ฆ็‚นๅค„็†

โšก ๆ€ง่ƒฝไผ˜ๅŒ–

  • ้ซ˜ๆ•ˆๆธฒๆŸ“๏ผšไผ˜ๅŒ–็š„็ป„ไปถๆž„ๅปบ็ญ–็•ฅ
  • ๆ‡’ๅŠ ่ฝฝ๏ผšๆŒ‰้œ€ๅŠ ่ฝฝๅ‡ๅฐ‘่ต„ๆบๅ ็”จ
  • ๅ†…ๅญ˜็ฎก็†๏ผšๆ™บ่ƒฝ่ต„ๆบๅ›žๆ”ถๆœบๅˆถ
  • ๆ ‘ๆ‘‡ไผ˜ๅŒ–๏ผš็งป้™คๆœชไฝฟ็”จไปฃ็ 

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

1. ๆทปๅŠ ไพ่ต–

# pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  zephyr_ui: ^0.3.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  zephyr_ui_dev_tools: ^0.3.0

2. ๅŸบ็ก€้…็ฝฎ

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ZephyrApp(
      title: 'ZephyrUI ๅบ”็”จ',
      theme: ZephyrTheme.light(),
      darkTheme: ZephyrTheme.dark(),
      themeMode: ThemeMode.system,
      home: const HomeScreen(),
    );
  }
}

3. ไฝฟ็”จ็คบไพ‹

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('ZephyrUI ๆผ”็คบ'),
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(24),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            // ๆ ‡้ข˜ๅŒบๅŸŸ
            const Text(
              'ๆฌข่ฟŽไฝฟ็”จ ZephyrUI',
              style: TextStyle(
                fontSize: 32,
                fontWeight: FontWeight.bold,
              ),
            ),
            const SizedBox(height: 8),
            const Text(
              'ไผไธš็บง Flutter UI ็ป„ไปถๅบ“๏ผŒไธบ็Žฐไปฃๅบ”็”จ่€Œ็”Ÿ',
              style: TextStyle(
                fontSize: 16,
                color: Colors.grey,
              ),
            ),
            const SizedBox(height: 32),

            // ๆŒ‰้’ฎ็ป„ไปถๆผ”็คบ
            Wrap(
              spacing: 12,
              runSpacing: 12,
              children: [
                ZephyrButton(
                  text: 'ไธป่ฆๆ“ไฝœ',
                  onPressed: () => print('Primary action'),
                  type: ZephyrButtonType.primary,
                ),
                ZephyrButton(
                  text: 'ๆฌก่ฆๆ“ไฝœ',
                  onPressed: () => print('Secondary action'),
                  type: ZephyrButtonType.secondary,
                ),
                ZephyrButton(
                  text: '่พนๆก†ๆ“ไฝœ',
                  onPressed: () => print('Outlined action'),
                  type: ZephyrButtonType.outlined,
                ),
              ],
            ),

            const SizedBox(height: 32),

            // ่กจๅ•็ป„ไปถๆผ”็คบ
            ZephyrInput(
              label: '้‚ฎ็ฎฑๅœฐๅ€',
              placeholder: '่ฏท่พ“ๅ…ฅๆ‚จ็š„้‚ฎ็ฎฑ',
              prefixIcon: const Icon(Icons.email_outlined),
              validator: (value) {
                if (value == null || value.isEmpty) {
                  return '่ฏท่พ“ๅ…ฅ้‚ฎ็ฎฑๅœฐๅ€';
                }
                if (!RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(value)) {
                  return '่ฏท่พ“ๅ…ฅๆœ‰ๆ•ˆ็š„้‚ฎ็ฎฑๅœฐๅ€';
                }
                return null;
              },
            ),

            const SizedBox(height: 24),

            // ๅก็‰‡็ป„ไปถๆผ”็คบ
            ZephyrCard(
              title: 'ไธ“ไธš UI ็ป„ไปถ',
              subtitle: 'ไธบไผไธš็บงๅบ”็”จ็ฒพๅฟƒ่ฎพ่ฎก',
              content: const Text(
                'ZephyrUI ๆไพ›ไบ†่ถ…่ฟ‡ 60 ไธช้ซ˜่ดจ้‡ใ€ๆ— ้šœ็ขไธ”ๅฎŒๅ…จๅฏๅฎšๅˆถ็š„ Flutter ็ป„ไปถ๏ผŒ'
                'ๅธฎๅŠฉๅผ€ๅ‘่€…ๅฟซ้€Ÿๆž„ๅปบ็ŽฐไปฃๅŒ–็š„็”จๆˆท็•Œ้ขใ€‚',
              ),
              actions: [
                ZephyrButton(
                  text: 'ๆŸฅ็œ‹ๆ–‡ๆกฃ',
                  onPressed: () => print('View documentation'),
                  type: ZephyrButtonType.text,
                ),
                ZephyrButton(
                  text: '็ซ‹ๅณๅผ€ๅง‹',
                  onPressed: () => print('Get started'),
                  type: ZephyrButtonType.primary,
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

๐Ÿ“ฆ ๅฎ‰่ฃ…ๆŒ‡ๅ—

็ณป็ปŸ่ฆๆฑ‚

  • Flutter: ^3.0.0
  • Dart: ^3.0.0
  • iOS: 12.0+
  • Android: API 21+

ๅฎ‰่ฃ…ๆญฅ้ชค

# 1. ๅ…‹้š†ไป“ๅบ“
git clone https://github.com/Agions/zephyr-ui.git
cd zephyr-ui

# 2. ๅฎ‰่ฃ…ไพ่ต–
flutter pub get

# 3. ่ฟ่กŒ็คบไพ‹ๅบ”็”จ
flutter run -t lib/main.dart

# 4. ่ฟ่กŒๆต‹่ฏ•
flutter test

# 5. ้™ๆ€ๅˆ†ๆž
flutter analyze

๐ŸŽจ ๆ ธๅฟƒ็‰นๆ€ง

๐ŸŽฏ ็ป„ไปถ็”Ÿๆ€

็ฑปๅˆซ ็ป„ไปถๆ•ฐ้‡ ็Šถๆ€ ๆ่ฟฐ
๐Ÿ“‹ ่กจๅ•็ป„ไปถ 13 โœ… ่พ“ๅ…ฅใ€้€‰ๆ‹ฉใ€้ชŒ่ฏ็ญ‰่กจๅ•ๅ…ƒ็ด 
๐ŸŽฏ ๅŸบ็ก€็ป„ไปถ 8 โœ… ๆŒ‰้’ฎใ€ๅก็‰‡ใ€ๅคดๅƒ็ญ‰ๅŸบ็ก€ๅ…ƒ็ด 
๐Ÿงญ ๅฏผ่ˆช็ป„ไปถ 8 โœ… ้€‰้กนๅกใ€ๆญฅ้ชคๅ™จใ€้ขๅŒ…ๅฑ‘็ญ‰
๐Ÿ“Š ๆ•ฐๆฎๅฑ•็คบ 13 โœ… ่กจๆ ผใ€ๅˆ—่กจใ€ๅ›พ่กจ็ญ‰ๆ•ฐๆฎ็ป„ไปถ
๐Ÿ’ฌ ๅ้ฆˆ็ป„ไปถ 6 โœ… ๆ็คบใ€ๅŠ ่ฝฝใ€ๅฏน่ฏๆก†็ญ‰
๐Ÿ—๏ธ ๅธƒๅฑ€็ป„ไปถ 4 โœ… ็ฝ‘ๆ ผใ€ๅฎนๅ™จใ€ๆŠ˜ๅ ้ขๆฟ็ญ‰
๐Ÿš€ ้ซ˜็บง็ป„ไปถ 16 โœ… ๅ›พ่กจใ€ไธŠไผ ใ€็ผ–่พ‘ๅ™จ็ญ‰

๐Ÿ”ง ๅผ€ๅ‘ๅทฅๅ…ท

  • ็ƒญ้‡่ฝฝ๏ผšๅฎžๆ—ถ้ข„่งˆไปฃ็ ๆ›ดๆ”น
  • ๅผ€ๅ‘ๅทฅๅ…ท๏ผšๅฎŒๆ•ด็š„ๅผ€ๅ‘่พ…ๅŠฉๅทฅๅ…ท้›†
  • ็ฑปๅž‹ๅฎ‰ๅ…จ๏ผšๅฎŒๆ•ด็š„ TypeScript ๆ”ฏๆŒ
  • ๆต‹่ฏ•ๅทฅๅ…ท๏ผšๅ†…็ฝฎๆต‹่ฏ•ๆก†ๆžถๅ’Œๅทฅๅ…ท

๐Ÿ“ˆ ๆ€ง่ƒฝ็›‘ๆŽง

class ZephyrPerformanceMetrics {
  static const Duration targetFrameTime = Duration(milliseconds: 16);
  static const Duration maxBuildTime = Duration(milliseconds: 2);
  static const int maxMemoryUsage = 100; // MB
  static const double jankThreshold = 0.1;
}

๐Ÿ—๏ธ ๆžถๆž„่ฎพ่ฎก

็ณป็ปŸๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    ZephyrUI ๆžถๆž„                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   ่กจ็Žฐๅฑ‚        โ”‚  โ”‚   ็ป„ไปถๅฑ‚        โ”‚  โ”‚  ๅทฅๅ…ทๅฑ‚     โ”‚  โ”‚
โ”‚  โ”‚                 โ”‚  โ”‚                 โ”‚  โ”‚             โ”‚  โ”‚
โ”‚  โ”‚ โ€ข ไธป้ข˜็ณป็ปŸ     โ”‚  โ”‚ โ€ข ๅŸบ็ก€็ป„ไปถ     โ”‚  โ”‚ โ€ข ๅทฅๅ…ทๅ‡ฝๆ•ฐ  โ”‚  โ”‚
โ”‚  โ”‚ โ€ข ๆ ทๅผ็ฎก็†     โ”‚  โ”‚ โ€ข ๅคๅˆ็ป„ไปถ     โ”‚  โ”‚ โ€ข ๅธธ้‡ๅฎšไน‰  โ”‚  โ”‚
โ”‚  โ”‚ โ€ข ๅ“ๅบ”ๅผๅธƒๅฑ€   โ”‚  โ”‚ โ€ข ไธšๅŠก็ป„ไปถ     โ”‚  โ”‚ โ€ข ่พ…ๅŠฉ็ฑป    โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   ๆœๅŠกๅฑ‚        โ”‚  โ”‚   ๆ•ฐๆฎๅฑ‚        โ”‚  โ”‚  ๅนณๅฐๅฑ‚     โ”‚  โ”‚
โ”‚  โ”‚                 โ”‚  โ”‚                 โ”‚  โ”‚             โ”‚  โ”‚
โ”‚  โ”‚ โ€ข ไธป้ข˜ๆœๅŠก     โ”‚  โ”‚ โ€ข ็Šถๆ€็ฎก็†     โ”‚  โ”‚ โ€ข iOS       โ”‚  โ”‚
โ”‚  โ”‚ โ€ข ๅŠจ็”ปๆœๅŠก     โ”‚  โ”‚ โ€ข ๆ•ฐๆฎๆจกๅž‹     โ”‚  โ”‚ โ€ข Android   โ”‚  โ”‚
โ”‚  โ”‚ โ€ข ไบ‹ไปถๆœๅŠก     โ”‚  โ”‚ โ€ข ไธšๅŠก้€ป่พ‘     โ”‚  โ”‚ โ€ข Web       โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

่ฎพ่ฎกๅŽŸๅˆ™

  1. ไธ€่‡ดๆ€ง๏ผš็ปŸไธ€็š„่ฎพ่ฎก่ฏญ่จ€ๅ’Œไบคไบ’ๆจกๅผ
  2. ๅฏ่ฎฟ้—ฎๆ€ง๏ผš้ตๅพช WCAG 2.1 ๆ ‡ๅ‡†
  3. ๆ€ง่ƒฝ๏ผšไผ˜ๅŒ–็š„ๆธฒๆŸ“ๅ’Œๅ†…ๅญ˜ไฝฟ็”จ
  4. ๅฏๅฎšๅˆถๆ€ง๏ผš็ตๆดป็š„ไธป้ข˜็ณป็ปŸ
  5. ๆ˜“็”จๆ€ง๏ผš็›ด่ง‚็š„ API ่ฎพ่ฎก

๐Ÿ“Š ็ป„ไปถๅบ“

๐Ÿ“‹ ่กจๅ•็ป„ไปถ

็ป„ไปถ ๅŠŸ่ƒฝ ็Šถๆ€
ZephyrInput ๆ–‡ๆœฌ่พ“ๅ…ฅๆก† โœ…
ZephyrSelect ไธ‹ๆ‹‰้€‰ๆ‹ฉๅ™จ โœ…
ZephyrDatePicker ๆ—ฅๆœŸ้€‰ๆ‹ฉๅ™จ โœ…
ZephyrCheckbox ๅค้€‰ๆก† โœ…
ZephyrRadio ๅ•้€‰ๆŒ‰้’ฎ โœ…
ZephyrSwitch ๅผ€ๅ…ณๅˆ‡ๆข โœ…
ZephyrSlider ๆป‘ๅ—็ป„ไปถ โœ…
ZephyrRating ่ฏ„ๅˆ†็ป„ไปถ โœ…
ZephyrTimePicker ๆ—ถ้—ด้€‰ๆ‹ฉๅ™จ โœ…
ZephyrTextArea ๅคš่กŒๆ–‡ๆœฌ่พ“ๅ…ฅ โœ…
ZephyrCheckboxGroup ๅค้€‰ๆก†็ป„ โœ…
ZephyrRadioGroup ๅ•้€‰ๆก†็ป„ โœ…

๐ŸŽฏ ๅŸบ็ก€็ป„ไปถ

็ป„ไปถ ๅŠŸ่ƒฝ ็Šถๆ€
ZephyrButton ๅคšๆ ทๅผๆŒ‰้’ฎ โœ…
ZephyrAvatar ๅคดๅƒ็ป„ไปถ โœ…
ZephyrBadge ๅพฝ็ซ ๆŒ‡็คบๅ™จ โœ…
ZephyrCard ๅก็‰‡็ป„ไปถ โœ…
ZephyrChip ๆ ‡็ญพ้€‰ๆ‹ฉๅ™จ โœ…
ZephyrIcon ๅ›พๆ ‡็ป„ไปถ โœ…
ZephyrText ๆ–‡ๆœฌ็ป„ไปถ โœ…
ZephyrDivider ๅˆ†ๅ‰ฒ็บฟ็ป„ไปถ โœ…

๐Ÿงญ ๅฏผ่ˆช็ป„ไปถ

็ป„ไปถ ๅŠŸ่ƒฝ ็Šถๆ€
ZephyrTabs ้€‰้กนๅกๅฏผ่ˆช โœ…
ZephyrStepper ๆญฅ้ชคๅ™จ โœ…
ZephyrBreadcrumb ้ขๅŒ…ๅฑ‘ๅฏผ่ˆช โœ…
ZephyrPagination ๅˆ†้กต็ป„ไปถ โœ…
ZephyrBottomNavigationBar ๅบ•้ƒจๅฏผ่ˆชๆ  โœ…
ZephyrSideMenu ไพง่พน่œๅ• โœ…
ZephyrNavigationRail ๅฏผ่ˆชๆ  โœ…
ZephyrTour ๅผ•ๅฏผๆธธ่งˆ โœ…

๐Ÿ“š ๆ–‡ๆกฃ่ต„ๆบ

๐Ÿ“– ๅ…ฅ้—จๆŒ‡ๅ—

๐ŸŽจ ่ฎพ่ฎกๆŒ‡ๅ—

๐Ÿš€ ๆœ€ไฝณๅฎž่ทต

๐Ÿ”ง API ๅ‚่€ƒ


๐Ÿค ่ดก็ŒฎๆŒ‡ๅ—

ๅผ€ๅ‘็Žฏๅขƒ่ฎพ็ฝฎ

# 1. Fork ไป“ๅบ“
# 2. ๅ…‹้š†ๅˆฐๆœฌๅœฐ
git clone https://github.com/YOUR_USERNAME/zephyr-ui.git
cd zephyr-ui

# 3. ๆทปๅŠ ไธŠๆธธไป“ๅบ“
git remote add upstream https://github.com/Agions/zephyr-ui.git

# 4. ๅˆ›ๅปบๅŠŸ่ƒฝๅˆ†ๆ”ฏ
git checkout -b feature/your-feature-name

# 5. ๅฎ‰่ฃ…ไพ่ต–
flutter pub get

# 6. ๅผ€ๅ‘ๅ’Œๆต‹่ฏ•
flutter test
flutter analyze

่ดก็Œฎ่ง„่Œƒ

  • ๐Ÿ“ ไปฃ็ ้ฃŽๆ ผ๏ผš้ตๅพช Dart ๅฎ˜ๆ–น่ง„่Œƒ
  • ๐Ÿงช ๆต‹่ฏ•่ฆ†็›–๏ผšไฟๆŒ 90%+ ็š„ๆต‹่ฏ•่ฆ†็›–็އ
  • ๐Ÿ“š ๆ–‡ๆกฃ๏ผšไธบๆ‰€ๆœ‰ๅ…ฌๅ…ฑ API ็ผ–ๅ†™ๆ–‡ๆกฃๆณจ้‡Š
  • ๐ŸŽจ ่ฎพ่ฎก๏ผš้ตๅพช Material Design 3 ๆŒ‡ๅ—
  • โ™ฟ ๆ— ้šœ็ข๏ผš็กฎไฟ WCAG AA ๅˆ่ง„

ๆไบค่ง„่Œƒ

# ๆไบคๆ ผๅผ
git commit -m "feat: ๆทปๅŠ ๆ–ฐ็ป„ไปถ X"
git commit -m "fix: ไฟฎๅค็ป„ไปถ Y ็š„ bug"
git commit -m "docs: ๆ›ดๆ–ฐ README ๆ–‡ๆกฃ"
git commit -m "style: ไปฃ็ ๆ ผๅผๅŒ–"
git commit -m "refactor: ้‡ๆž„็ป„ไปถ็ป“ๆž„"
git commit -m "test: ๆทปๅŠ ๅ•ๅ…ƒๆต‹่ฏ•"

๐Ÿ“ž ๆŠ€ๆœฏๆ”ฏๆŒ

๐Ÿ†˜ ่Žทๅ–ๅธฎๅŠฉ

  1. ๆ–‡ๆกฃ๏ผšไปŽ ๅฎŒๆ•ดๆ–‡ๆกฃ ๅผ€ๅง‹
  2. ็คบไพ‹๏ผšๆŸฅ็œ‹ ็คบไพ‹ๅบ”็”จ
  3. ้—ฎ้ข˜ๆŠฅๅ‘Š๏ผšGitHub Issues

๐Ÿ’ผ ไผไธšๆ”ฏๆŒ

ไธบไผไธšๅฎขๆˆทๆไพ›ไธ“ไธšๆ”ฏๆŒๆœๅŠก๏ผš

  • ๐ŸŽฏ ไผ˜ๅ…ˆๆ”ฏๆŒ๏ผš24/7 ๆŠ€ๆœฏๆ”ฏๆŒ
  • ๐Ÿš€ ๅฎšๅˆถๅผ€ๅ‘๏ผšๅŠŸ่ƒฝๅฎšๅˆถๅ’Œๅผ€ๅ‘
  • ๐Ÿ”ง ๆŠ€ๆœฏๅ’จ่ฏข๏ผšๆžถๆž„่ฎพ่ฎกๅ’Œๆ€ง่ƒฝไผ˜ๅŒ–

๐Ÿ“„ ๅผ€ๆบๅ่ฎฎ

ๆœฌ้กน็›ฎ้‡‡็”จ MIT ๅ่ฎฎ ๅผ€ๆบใ€‚

ๅ่ฎฎๆฆ‚่ฆ

โœ… ๅ…่ฎธ๏ผš

  • ๅ•†ไธšไฝฟ็”จ
  • ไฟฎๆ”นๅ’Œๅˆ†ๅ‘
  • ็งไบบไฝฟ็”จ
  • ๅญๅ่ฎฎไฝฟ็”จ

โŒ ็ฆๆญข๏ผš

  • ๅฃฐๆ˜Ž่ดฃไปป
  • ่ฏ‰่ฏธๆณ•ๅพ‹

๐Ÿ“‹ ่ฆๆฑ‚๏ผš

  • ๅŒ…ๅซ่ฎธๅฏ่ฏๅ’Œ็‰ˆๆƒๅฃฐๆ˜Ž
  • ๅฃฐๆ˜Ž้‡ๅคงๆ›ดๆ”น

่ฏฆ่ง LICENSE ๆ–‡ไปถใ€‚


็”ฑ Agions ๅ›ข้˜Ÿ็”จ โค๏ธ ็ฒพๅฟƒๆ‰“้€ 

GitHub

About

๐Ÿš€ 60+ ไธ“ไธš็ป„ไปถ โ€ข ๐ŸŽจ ่ฎพ่ฎก็ณป็ปŸ โ€ข ๐Ÿ“ฑ ๅ“ๅบ”ๅผ โ€ข โ™ฟ ๆ— ้šœ็ข โ€ข โšก ้ซ˜ๆ€ง่ƒฝ

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages