|
| 1 | +import 'dart:io'; |
| 2 | +import 'dart:ui'; |
| 3 | + |
| 4 | +import 'package:flutter/material.dart'; |
| 5 | +import 'package:flutter/services.dart'; |
| 6 | +import 'package:flutter_module/page/trend_page.dart'; |
| 7 | +import 'color/color.dart'; |
| 8 | + |
| 9 | +void main() { |
| 10 | + runApp(MyApp(window.defaultRouteName)); |
| 11 | + if (Platform.isAndroid) { |
| 12 | + // 以下两行 设置android状态栏为透明的沉浸。写在组件渲染之后,是为了在渲染后进行set赋值,覆盖状态栏,写在渲染之前MaterialApp组件会覆盖掉这个值。 |
| 13 | + SystemUiOverlayStyle systemUiOverlayStyle = |
| 14 | + SystemUiOverlayStyle(statusBarColor: Colors.transparent); |
| 15 | + SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle); |
| 16 | + } |
| 17 | +} |
| 18 | + |
| 19 | +class MyApp extends StatelessWidget { |
| 20 | + final String defaultRoute; |
| 21 | + |
| 22 | + const MyApp(this.defaultRoute, {Key key}) : super(key: key); |
| 23 | + |
| 24 | + @override |
| 25 | + Widget build(BuildContext context) { |
| 26 | + return MaterialApp( |
| 27 | + title: 'GitHub', |
| 28 | + theme: ThemeData( |
| 29 | + primarySwatch: createMaterialColor(DColor.themeColor), |
| 30 | + ), |
| 31 | + home: _widgetForRoute(defaultRoute)); |
| 32 | + } |
| 33 | +} |
| 34 | + |
| 35 | +Widget _widgetForRoute(String route) { |
| 36 | + //根据不同的路由显示不同的界面 |
| 37 | + switch (route) { |
| 38 | + case "trend": |
| 39 | + return TrendPage(); |
| 40 | + default: |
| 41 | + return Center(child: Text('Unknown route: $route')); |
| 42 | + } |
| 43 | +} |
| 44 | + |
| 45 | +//自定义主题颜色 |
| 46 | +MaterialColor createMaterialColor(Color color) { |
| 47 | + List strengths = <double>[.05]; |
| 48 | + Map swatch = <int, Color>{}; |
| 49 | + final int r = color.red, g = color.green, b = color.blue; |
| 50 | + |
| 51 | + for (int i = 1; i < 10; i++) { |
| 52 | + strengths.add(0.1 * i); |
| 53 | + } |
| 54 | + strengths.forEach((strength) { |
| 55 | + final double ds = 0.5 - strength; |
| 56 | + swatch[(strength * 1000).round()] = Color.fromRGBO( |
| 57 | + r + ((ds < 0 ? r : (255 - r)) * ds).round(), |
| 58 | + g + ((ds < 0 ? g : (255 - g)) * ds).round(), |
| 59 | + b + ((ds < 0 ? b : (255 - b)) * ds).round(), |
| 60 | + 1, |
| 61 | + ); |
| 62 | + }); |
| 63 | + return MaterialColor(color.value, swatch); |
| 64 | +} |
0 commit comments