castor_flutter 1.0.6 copy "castor_flutter: ^1.0.6" to clipboard
castor_flutter: ^1.0.6 copied to clipboard

This Flutter package is a collection of widgets and utilities for building Flutter applications.

example/lib/main.dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:toastification/toastification.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:castor_flutter/l10n/l10n.dart';

import 'pages/ui/ui_index_page.dart';
import 'pages/core/core_index_page.dart';
import 'pages/settings/language_page.dart';
import 'widgets/web_wrapper.dart';

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // Default: follow system language. Use menu to switch to English or Chinese explicitly.
  Locale? _locale;

  void _setLocale(Locale? locale) {
    setState(() {
      _locale = locale;
    });
  }

  @override
  Widget build(BuildContext context) {
    return ToastificationWrapper(
        child: MaterialApp(
            title: 'castor_flutter Example',
            theme: ThemeData(
              primarySwatch: Colors.blue,
              // 统一页面切换效果:采用垂直向上滑入(上下切换)
              pageTransitionsTheme: const PageTransitionsTheme(
                builders: <TargetPlatform, PageTransitionsBuilder>{
                  TargetPlatform.android: FadeUpwardsPageTransitionsBuilder(),
                  TargetPlatform.iOS: FadeUpwardsPageTransitionsBuilder(),
                  TargetPlatform.linux: FadeUpwardsPageTransitionsBuilder(),
                  TargetPlatform.macOS: FadeUpwardsPageTransitionsBuilder(),
                  TargetPlatform.windows: FadeUpwardsPageTransitionsBuilder(),
                },
              ),
            ),
            locale: _locale,
            localizationsDelegates: const [
              AppLocalizations.delegate,
              GlobalMaterialLocalizations.delegate,
              GlobalWidgetsLocalizations.delegate,
              GlobalCupertinoLocalizations.delegate,
            ],
            supportedLocales: AppLocalizations.supportedLocales,
            home: kIsWeb
                ? WebWrapper(
                    child: ExampleHomePage(
                    onLocaleChange: _setLocale,
                    currentLocale: _locale,
                  ))
                : ExampleHomePage(
                    onLocaleChange: _setLocale,
                    currentLocale: _locale,
                  )));
  }
}

class ExampleHomePage extends StatefulWidget {
  const ExampleHomePage({
    super.key,
    required this.onLocaleChange,
    required this.currentLocale,
  });

  final ValueChanged<Locale?> onLocaleChange;
  final Locale? currentLocale; // null -> system

  @override
  State<ExampleHomePage> createState() => _ExampleHomePageState();
}

class _ExampleHomePageState extends State<ExampleHomePage> {
  int _selectedIndex = 0;

  static final List<Widget> _pages = <Widget>[
    const UIIndexPage(),
    const CoreIndexPage(),
  ];

  void _onItemTapped(int index) {
    setState(() {
      _selectedIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('castor_flutter Example'),
        actions: [
          IconButton(
            tooltip: 'Language',
            icon: const Icon(Icons.language),
            onPressed: () {
              final current = widget.currentLocale == null
                  ? 'system'
                  : widget.currentLocale!.languageCode;
              Navigator.of(context).push(
                MaterialPageRoute(
                  builder: (_) => kIsWeb
                      ? WebWrapper(
                          child: LanguageSelectionPage(
                          currentCode: current,
                          onSelected: _handleLocaleChange,
                        ))
                      : LanguageSelectionPage(
                          currentCode: current,
                          onSelected: _handleLocaleChange,
                        ),
                ),
              );
            },
          ),
        ],
      ),
      body: _pages[_selectedIndex],
      bottomNavigationBar: BottomNavigationBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.widgets),
            label: 'UI组件',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.calculate),
            label: '类库',
          ),
        ],
        currentIndex: _selectedIndex,
        onTap: _onItemTapped,
      ),
    );
  }

  void _handleLocaleChange(value) {
    switch (value) {
      case 'system':
        widget.onLocaleChange(null);
        break;
      case 'en':
        widget.onLocaleChange(const Locale('en'));
        break;
      case 'zh':
        widget.onLocaleChange(const Locale('zh'));
        break;
    }
  }
}
1
likes
150
points
278
downloads

Publisher

unverified uploader

Weekly Downloads

This Flutter package is a collection of widgets and utilities for building Flutter applications.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

dio, flutter, flutter_image_compress, flutter_localizations, image_picker, intl, photo_manager, photo_view, toastification

More

Packages that depend on castor_flutter