这周发生了什么
· 阅读需 8 分钟
以下是这周编程技术领域的一些重要动态:
工具与平台更新
- JDK 24 进入发布阶段:JDK 24 已进入首个候选发布阶段,计划于2025年3月18日正式发布。它包含24项新特性,涵盖核心Java库、语言规范、安全库、HotSpot和Java工具等方面。
- 字节跳动Trae国内版上线:字节跳动的AI编程产品Trae国内版正式上线,配置了先进的AI模型,支持代码补全、理解、Bug修复及自然语言生成代码等功能,为开发者提供高效、智能化的编程体验。
行业趋势
- AI主导代码生产趋势加速:Anthropic CEO预测,未来3到6个月内AI将编写90%的代码,一年内几乎包揽全部编程工作。这一趋势促使开发者提升AI相关技能,同时也引发对软件工程师职业前景的思考。
- 低代码/无代码平台兴起:低代码和无代码平台使开发更加便捷,无需深厚编程知识即可构建强大应用,有助于简化开发流程、缩短产品上市时间并促进快速创新。
未来展望
- AI编程工具持续进化:AI编程助手将更加智能,能够更好地理解开发者意图,自动生成高质量代码,并在代码优化、调试等方面提供更强大支持。
- 量子计算与编程融合加深:随着量子计算技术的发展,未来可能出现专门针对量子计算的编程语言和工具,推动量子计算在更多领域的应用。
这些动态反映了编程技术领域的快速发展和变革,开发者需要不断学习和适应新技术,以保持竞争力。
----------------------------Flutter
以下是Flutter中常见的状态管理方案:
- Provider:由Flutter官方推荐,基于依赖注入,简单易用,适合中小型应用。
- Getx:全能框架,用于状态管理、路由和依赖注入,非常适用于低到中等复杂度的应用程序。
- Riverpod:由Provider的作者开发,功能更强大、灵活且类型安全,状态管理与
BuildContext
解耦,适用于大型应用的开发。
以下是目前Flutter中最流行的状态管理方案:
1. Riverpod
- 特点:由Provider的作者开发,功能更强大、灵活且类型安全,状态管理与
BuildContext
解耦,适用于大型应用的开发。 - 使用示例:
final counterProvider = StateNotifierProvider<CounterModel, int>((ref) {
return CounterModel();
});
class CounterModel extends StateNotifier<int> {
CounterModel() : super(0);
void increment() {
state++;
}
}
void main() {
runApp(ProviderScope(child: MyApp()));
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Riverpod Example')),
body: Center(
child: Consumer(
builder: (context, ref, child) {
final count = ref.watch(counterProvider);
return Text('Count: $count');
},
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => context.read(counterProvider.notifier).increment(),
child: Icon(Icons.add),
),
),
);
}
} - 优点:解耦上下文,类型安全,易于测试,支持异步状态。
2. Provider
- 特点:Flutter官方推荐的状态管理方案之一,基于依赖注入,简单易用,适合中小型应用。
- 使用示例:
class Counter with ChangeNotifier {
int _count = 0;
int get count => _count;
void increment() {
_count++;
notifyListeners();
}
}
void main() {
runApp(
ChangeNotifierProvider(
create: (context) => Counter(),
child: MyApp(),
),
);
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Provider Example')),
body: Center(
child: Consumer<Counter>(
builder: (context, counter, child) {
return Text('Count: ${counter.count}');
},
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => Provider.of<Counter>(context, listen: false).increment(),
child: Icon(Icons.add),
),
),
);
}
}
3. Getx
- 特点:全能框架,用于状态管理、路由和依赖注入,非常适用于低到中等复杂度的应用程序。
- 使用示例:
void main() => runApp(MaterialApp(home: Home()));
class Home extends StatelessWidget {
var count = 0.obs;
Widget build(context) => Scaffold(
appBar: AppBar(title: Text("counter")),
body: Center(
child: Obx(() => Text("$count")),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () => count++,
));
} - 优点:简单易用,性能优秀,内置依赖注入和路由管理功能。
4. Redux
- 特点:具有集中式存储、操作和减速器的可预测状态管理,适用于需要强大可预测性和工具的应用程序。
- 使用示例:
enum Actions { Increment }
int counterReducer(int state, dynamic action) {
return action == Actions.Increment ? state + 1 : state;
}
void main() {
final store = Store<int>(counterReducer, initialState: 0);
runApp(FlutterReduxApp(title: 'Flutter Redux Demo', store: store));
}
class FlutterReduxApp extends StatelessWidget {
final Store<int> store;
final String title;
FlutterReduxApp({Key key, this.store, this.title}) : super(key: key);
Widget build(BuildContext context) {
return StoreProvider<int>(
store: store,
child: MaterialApp(
theme: ThemeData.dark(),
title: title,
home: Scaffold(
appBar: AppBar(title: Text(title)),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
StoreConnector<int, String>(
converter: (store) => store.state.toString(),
builder: (context, count) {
return Text(
'The button has been pushed this many times: $count',
style: Theme.of(context).textTheme.display1,
);
},
)
],
),
),
floatingActionButton: StoreConnector<int, VoidCallback>(
converter: (store) {
return () => store.dispatch(Actions.Increment);
},
builder: (context, callback) {
return FloatingActionButton(
onPressed: callback,
tooltip: 'Increment',
child: Icon(Icons.add),
);
},
),
),
),
);
}
}
5. BLoC
- 特点:通过将业务逻辑与UI分离,便于代码复用和测试,适合中大型应用。
- 使用示例:
class CounterBloc {
final _counterController = StreamController<int>();
Stream<int> get counter => _counterController.stream;
int _count = 0;
void increment() {
_count++;
_counterController.sink.add(_count);
}
void dispose() {
_counterController.close();
}
}
void main() {
final counterBloc = CounterBloc();
runApp(Provider.value(value: counterBloc, child: MyApp()));
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('BLoC Example')),
body: Center(
child: StreamBuilder<int>(
stream: Provider.of<CounterBloc>(context).counter,
builder: (context, snapshot) {
return Text('Count: ${snapshot.data ?? 0}');
},
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => Provider.of<CounterBloc>(context).increment(),
child: Icon(Icons.add),
),
),
);
}
}
6. MobX
- 特点:采用响应式编程,简化状态管理,适合需要灵活状态管理的项目。
- 使用示例:
class CounterStore {
int count = 0;
void increment() {
count++;
}
}
void main() {
final store = CounterStore();
runApp(Provider.value(value: store, child: MyApp()));
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('MobX Example')),
body: Center(
child: Observer(
builder: (_) => Text('Count: ${Provider.of<CounterStore>(context).count}'),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => Provider.of<CounterStore>(context).increment(),
child: Icon(Icons.add),
),
),
);
}
}
这些状态管理方案各有优缺点,选择哪种方案取决于项目的具体需求和复杂度。
flutter 待加库
- flutter_native_splash:启动屏