Flutter 基础详解

2025-03-19  本文已影响0人  lukyy
image.png

语言的主要特点是什么?

widget
widget在flutter里基本是一些UI组件
有两种类型的widget:
statefulWidget:会自己重新构建自己(可以改变状态,通过 setState() 触发重建)
statelessWidget:不可变,一旦创建就不能改变
布局Widget:Container、Row、Column、Stack等。
常用Widget:Text、Image、ListView、GridView等。

StatefulWidget:通过setState管理状态。
状态管理方案:Provider、Riverpod、Bloc、GetX等状态管理工具。

Flutter 中的生命周期

状态管理

Flutter 中有哪些状态管理方案?

基础方案:setState
中级方案:InheritedWidget、Provider
高级方案:Riverpod、BLC、Redux、MobX、GetX

Provider 的工作原理是什么?

Provider 是基于 InheritedWidget 的封装,它允许在 Widget 树中高效地共享数据。当数据变化时,只有依赖该数据的 Widget 会重建。

什么是 BLC 模式?

BLC (Business Logic Component) 是一种状态管理模式,它将业务逻辑与 UI 分离,使用 Stream 和 Sink 来处理数据流。

什么是 BuildContext?

BuildContext 是 Widget 在树中位置的句柄(上下文联系的桥梁),用于:

Hot Reload 和 Hot Restart 有什么区别吗?

Hot Reload比Hot Restart快
Hot Reload:会编译我们文件里新加的代码并发送给dart虚拟机,dart会更新widgets来改变UI,会保留之前的state。
Hot Restart:会让dart 虚拟机重新编译应用。Hot Restart会重置所有的state回到初始值。


异步编程:理解Stream,掌握async和await。
包管理:学习如何使用pubspec.yaml管理依赖。
Stream
Stream 用来处理连续的异步操作,Stream 是一个抽象类,用于表示一序列异步数据的源。它是一种产生连续事件的方式,可以生成数据事件或者错误事件,以及流结束时的完成事件
Stream 分单订阅流和广播流。
网络状态的监控

Dart 中的 final 和 const 有什么区别?

布局与样式

常见的布局 Widget 有哪些?

Container:通用容器,可设置 padding/margin/decoration
Row/Column:水平和垂直布局
Stack:重叠布局
ListView/GridView:滚动列表
Flex/Expanded:弹性布局

如何实现响应式布局?

使用 MediaQuery.of(context) 获取屏幕尺寸
使用 LayoutBuilder 获取约束条件
使用 Flexible 和 Expanded 弹性布局
使用百分比或弹性布局
使用 OrientationBuilder 处理横竖屏变化

什么是 Theme?

Theme 是 Flutter 中统一管理应用样式的方式,可以定义颜色、字体、按钮样式等,并在整个应用中保持一致。

路由与导航

如何在 Flutter 中实现导航?
'//导航到新页面'
Navigator.push(context, MaterialPageRoute(builder: (context) => NewPage()));
'//返回上一页'
Navigator.pop(context);
命名路由如何配置?
MaterialApp(
  routes: {
    '/': (context) => HomePage(),
    '/details': (context) => DetailsPage(),
  },
);
解释 Dart 中的异步编程

Dart 使用 Future 和 async/await 处理异步操作:

Future<String> fetchData() async {
  var response = await http.get('https://api.example.com/data');
  return response.body;
}

网络与存储

如何进行网络请求?使用 http 包:

var response = await http.get(Uri.parse('https://api.example.com/data'));
Flutter 中的数据存储选项有哪些?

SharedPreferences:简单的键值对存储
SQLite:关系型数据库 (使用 sqflite 包)
Hive:轻量级 NoSQL 数据库
Firebase:云存储解决方案

性能优化

1. 如何优化 Flutter 应用性能?

使用 const Widget 减少重建
避免在 build 方法中进行耗时操作
使用 ListView.builder 处理长列表
减少 Widget 树的深度
使用性能分析工具 (Flutter DevTools)

2. 什么是 Widget 重建?如何避免不必要的重建?

Widget 重建是 Flutter 响应状态变化的机制。避免不必要重建的方法:
使用 const 构造函数
将不常变化的部分拆分为独立的 Widget
使用 Provider 等状态管理工具精确控制重建范围

Flutter 应用如何打包发布?

'//Android:'
flutter build appbundle
或
flutter build apk

//'iOS'
flutter build ios

引用
Flutter基础(二)--App结构和生命周期

上一篇 下一篇

猜你喜欢

热点阅读