WanAndroid Flutter 是基于 wanandroid 开源Api开发的一款Flutter应用。 旨在学习Flutter2.0常规需求的开发,以及常用框架的学习:
参考 arch 下的 http_manager
文件封装
1、图片。使用插件 flutter-img-sync
生成类似Android R文件
https://plugins.jetbrains.com/plugin/12585-flutter-img-sync
2、文本,颜色等可以放到一个类里,参考 res/colors
、 res/strings
1、导入库
dependencies:
json_annotation: ^4.0.0
dev_dependencies:
build_runner: ^1.0.0
json_serializable: ^4.0.0
2、编写原始model,可以参考 model/article.dart
, 也可以json字符串自动生成model
3、执行生成命令,生成结果参考 model/article.g.dart
flutter packages pub run build_runner build
fluro 路由框架 1、导入库
fluro: ^2.0.3
2、配置路由 参考routes下的 routes
和 routes_handler
class Routes {
static String root = "/";
static String web = "/web_page";
static String index = "/index";
static void configureRoutes(FluroRouter router) {
router.notFoundHandler = new Handler(
handlerFunc: (BuildContext? context, Map<String, List<String>> params) {
print("ROUTE WAS NOT FOUND !!!");
});
/// 第一个参数是路由地址,第二个参数是页面跳转和传参,第三个参数是默认的转场动画
router.define(root, handler: rootHandler, transitionType: TransitionType.cupertino);
router.define(index, handler: indexHandler, transitionType: TransitionType.fadeIn);
router.define(web, handler: webHandler, transitionType: TransitionType.cupertino);
}
}
3、创建全局Router并配置
class Application{
static late FluroRouter router;
}
// 注册 fluro routes
void main() {
FluroRouter router = FluroRouter();
Routes.configureRoutes(router); // Routes参考 routes/routes
Application.router = router;
runApp(MyApp());
}
MaterialApp(
title: 'Welcome to Flutter',
onGenerateRoute: Application.router.generator,
)
4、使用参考 routes/route_util.dart
1、定义类 with ChangeNotifier
class WTheme with ChangeNotifier {
static ColorModel light = ColorModel(
background: WColor.bg_light,
……
);
static ColorModel black = ColorModel(
background: WColor.bg_dark,
……
);
ColorModel current = black;
switchTheme() {
current = current == light ? black : light;
notifyListeners(); // 通知更新
}
}
2、配置Provider
// 配置,这里配置到App上;其他部分使用的Provider可以配置到某个页面
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => WTheme()),
],
child: MaterialApp(
title: 'Welcome to Flutter',
navigatorKey: Application.navGK,
onGenerateRoute: Application.router.generator,
builder: EasyLoading.init(),
),
);
}
}
3、使用
Container(
color: context.watch<WTheme>().current.background, // 使用watch 会监听变化
child: Column()
)
// 可以使用扩展简化使用
extension whteme_provider_context on BuildContext {
/// 扩展属性
ColorModel get wTheme => this.watch<WTheme>().current;
}
Container(
color: context.wTheme.background, // 使用watch 会监听变化
child: Column()
)
// 修改主题
context.watch<WTheme>().current.switchTheme()
github.com/zhaobozhen/LibChecker
构建web https://blog.csdn.net/u010568616/article/details/115241609
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。