Flutter基础功能插件remedi_base的使用
Flutter基础功能插件remedi_base的使用
remedi_base module
它具有以下功能。
1. 提供基本的HTTP API服务与Dio包装器。
2. 应用程序配置。
3. 提供应用程序ID。
4. AppContainer。
入门指南
#1. 如何使用?
A. AppConfig。
- AppConfig 提供应用程序信息,例如版本号、构建编号、构建风味等。
- 在
runApp()
前调用AppConfig.init()
。 - 在每个入口文件(如
main-dev.dart
或main-prod.dart
)上运行setFlavorConfig
以设置产品风味(开发环境或生产环境)。 - 将
AppContainer()
传递给runApp()
。
void main() async {
WidgetsFlutterBinding.ensureInitialized();
AppConfig.setFlavorConfig(
baseUrl: "https://google.com",
baseWebUrl: "https://naver.com",
isRelease: kReleaseMode,
endpoint: "dev",
enablePrintLog: kReleaseMode,
);
// 第一次执行初始化
await AppConfig.init();
// 可选
AppConfig.log();
runApp(AppContainer(
app: MaterialApp(
home: MyApp(),
),
));
}
B. HTTP API及其他。
B-1. HTTP 请求
- 提供了四个基于Dio的包装类用于POST、GET、PATCH和DELETE请求。
B-2. 应用程序唯一ID
- 可通过
AppRepository.appId
获取应用程序唯一ID。
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
Future<void> initPlatformState() async {
String platformVersion;
platformVersion = await AppRepository.instance.appId;
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: FutureBuilder(
future: GoogleApiService().request(),
builder: (context, snapshot) {
String htmlString = 'about:blank';
if (snapshot.hasData) {
htmlString = snapshot.data;
}
return ListView(
children: [Text(htmlString)],
);
},
),
),
);
}
}
class GoogleApiService extends DioGetApiService {
[@override](/user/override)
String get path => "";
[@override](/user/override)
String jsonTo(dynamic json) {
return json;
}
}
class GoogleApiDto extends IDto {
final String html;
GoogleApiDto({this.html});
[@override](/user/override)
Map<String, dynamic> toJson() {
return {"data": html};
}
}
示例代码
import 'dart:async';
import 'dart:developer' as dev;
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:remedi_base/remedi_base.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
AppConfig.setFlavorConfig(
baseUrl: "https://google.com",
baseWebUrl: "https://naver.com",
isRelease: kReleaseMode,
endpoint: "dev",
enablePrintLog: kReleaseMode,
);
// 第一次执行初始化
await AppConfig.init();
AppConfig.log();
runApp(AppWrapper(
app: MaterialApp(
home: MyApp(),
),
initialJobs: [
() {
dev.log("function 1");
},
() {
dev.log("function 2");
},
() {
dev.log("function 3");
}
],
));
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
Future<void> initPlatformState() async {
if (!mounted) return;
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: FutureBuilder(
builder: (context, snapshot) {
String htmlString = 'about:blank';
if (snapshot.hasData) {
htmlString = "${snapshot.data}";
}
return ListView(
children: [Text(htmlString)],
);
},
future: initPlatformState(),
),
),
);
}
}
更多关于Flutter基础功能插件remedi_base的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter基础功能插件remedi_base的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
remedi_base
是一个 Flutter 基础功能插件,通常用于简化 Flutter 应用开发中的一些常见任务,如网络请求、数据存储、状态管理等。以下是如何使用 remedi_base
插件的一些基本步骤和功能示例。
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 remedi_base
插件的依赖:
dependencies:
flutter:
sdk: flutter
remedi_base: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装插件。
2. 初始化插件
在你的 Flutter 应用的入口文件(通常是 main.dart
)中,初始化 remedi_base
插件:
import 'package:flutter/material.dart';
import 'package:remedi_base/remedi_base.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await RemedBase.init(); // 初始化插件
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
3. 使用网络请求功能
remedi_base
通常提供了简化的网络请求功能。以下是一个使用 remedi_base
进行 GET 请求的示例:
import 'package:flutter/material.dart';
import 'package:remedi_base/remedi_base.dart';
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _responseData = '';
Future<void> _fetchData() async {
try {
var response = await RemedBase.get('https://jsonplaceholder.typicode.com/posts/1');
setState(() {
_responseData = response.toString();
});
} catch (e) {
setState(() {
_responseData = 'Failed to load data';
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(_responseData),
ElevatedButton(
onPressed: _fetchData,
child: Text('Fetch Data'),
),
],
),
),
);
}
}
4. 使用数据存储功能
remedi_base
可能还提供了简化的本地数据存储功能。以下是一个使用 remedi_base
存储和读取数据的示例:
import 'package:flutter/material.dart';
import 'package:remedi_base/remedi_base.dart';
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _storedData = '';
Future<void> _saveData() async {
await RemedBase.saveData('key', 'Hello, RemedBase!');
}
Future<void> _loadData() async {
var data = await RemedBase.loadData('key');
setState(() {
_storedData = data ?? 'No data found';
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(_storedData),
ElevatedButton(
onPressed: _saveData,
child: Text('Save Data'),
),
ElevatedButton(
onPressed: _loadData,
child: Text('Load Data'),
),
],
),
),
);
}
}
5. 使用状态管理功能
remedi_base
可能还提供了简化的状态管理功能。以下是一个使用 remedi_base
进行状态管理的示例:
import 'package:flutter/material.dart';
import 'package:remedi_base/remedi_base.dart';
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
RemedBase.setState('counter', _counter);
}
[@override](/user/override)
void initState() {
super.initState();
RemedBase.getState('counter').then((value) {
setState(() {
_counter = value ?? 0;
});
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('You have pushed the button this many times:'),
Text('$_counter', style: Theme.of(context).textTheme.headline4),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}