Flutter Hasura集成插件mobidev_hasura的使用
Flutter Hasura集成插件mobidev_hasura的使用
标题
Flutter Hasura集成插件mobidev_hasura的使用
内容
<p>Easily execute Hasura's query and mutations, without the need of any other package.</p>
<h2 class="hash-header" id="features">Features <a href="#features" class="hash-link">#</a></h2>
<ul>
<li>Query</li>
<li>Upsert (mutation)</li>
<li>rawQuery</li>
<li>rawMutation</li>
</ul>
<h2 class="hash-header" id="getting-started">Getting started <a href="#getting-started" class="hash-link">#</a></h2>
<p>Add <strong>mobidev_hasura</strong> to your pubspec.yaml</p>
<p>import the package:</p>
<pre><code>import 'package:mobidev_hasura/mobidev_hasura.dart';
</code></pre>
<h2 class="hash-header" id="usage">Usage <a href="#usage" class="hash-link">#</a></h2>
<pre><code class="language-dart"> var hasura = Hasura(
endpoint: 'https://myendpoint.com/v11graphql',
token: 'my jwt token here'
);
var result = await hasura.query(table: 'customers', fields: {
'name',
'address',
'phone'
}, where: {
'name': {'_eq': 'josh'}
});
if (result.isOk) {
Map<String, dynamic> myRetrievedData = result.body;
//Do anything with your data
}
</code></pre>
<h2 class="hash-header" id="additional-information">Additional information <a href="#additional-information" class="hash-link">#</a></h2>
<p>This is the initial release.</p>
<p>New features will be added soon.</p>
示例代码
import 'package:mobidev_hasura/mobidev_hasura.dart';
void main() async {
var hasura = Hasura(
endpoint: 'https://myendpoint.com/v11graphql',
token: 'my jwt token here');
var result = await hasura.query(table: 'customers', fields: {
'name',
'address',
'phone'
}, where: {
'name': {'_eq': 'josh'}
});
if (result.isOk) {
Map<String, dynamic> myRetrievedData = result.body;
if(myRetrievedData.isNotEmpty) {
//Do anything with your data
}
}
}
完整示例demo
import 'package:flutter/material.dart';
import 'package:mobidev_hasura/mobidev_hasura.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Hasura Demo',
theme: ThemeData(
primaryColor: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
var hasura = Hasura(
endpoint: 'https://myendpoint.com/v11graphql',
token: 'my jwt token here');
Future<Map<String, dynamic>> fetchCustomerData() async {
var result = await hasura.query(table: 'customers', fields: {
'name',
'address',
'phone'
}, where: {
'name': {'_eq': 'josh'}
});
if (result.isOk) {
return result.body;
} else {
print('Error fetching customer data');
return null;
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Fetch Customer Data'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
final data = await fetchCustomerData();
if (data != null && data.isNotEmpty) {
List<Map<String, dynamic>> retrievedData = data['customers'];
for (var item in retrievedData) {
print(item);
}
} else {
print('No data found');
}
},
child: Text('Fetch Data'),
),
),
);
}
}
更多关于Flutter Hasura集成插件mobidev_hasura的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter Hasura集成插件mobidev_hasura的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中集成和使用mobidev_hasura
插件的示例代码。这个插件可以帮助你与Hasura GraphQL引擎进行交互。
前提条件
- 确保你已经有一个Flutter开发环境。
- 确保你已经设置好了Hasura GraphQL引擎,并且有一个运行中的Hasura实例。
步骤一:添加依赖
首先,在你的pubspec.yaml
文件中添加mobidev_hasura
依赖:
dependencies:
flutter:
sdk: flutter
mobidev_hasura: ^最新版本号 # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
步骤二:配置Hasura客户端
在你的Flutter项目中,创建一个Hasura客户端实例。下面是一个示例代码:
import 'package:flutter/material.dart';
import 'package:mobidev_hasura/mobidev_hasura.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Hasura Integration'),
),
body: HasuraExample(),
),
);
}
}
class HasuraExample extends StatefulWidget {
@override
_HasuraExampleState createState() => _HasuraExampleState();
}
class _HasuraExampleState extends State<HasuraExample> {
late HasuraClient hasuraClient;
@override
void initState() {
super.initState();
// 配置Hasura客户端
hasuraClient = HasuraClient(
endpoint: 'https://你的Hasura实例URL.com/v1/graphql', // 替换为你的Hasura实例URL
adminSecret: '你的admin_secret', // 如果需要admin权限,请提供admin_secret
headers: {
'x-hasura-admin-secret': '你的admin_secret', // 或者其他需要的headers
},
);
}
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
onPressed: () async {
// 调用Hasura查询示例
await fetchData();
},
child: Text('Fetch Data from Hasura'),
),
);
}
Future<void> fetchData() async {
try {
final query = '''
query {
users {
id
name
}
}
''';
final result = await hasuraClient.query(query: query);
print(result.data!);
} catch (e) {
print('Error fetching data: $e');
}
}
}
步骤三:运行应用
确保你的Hasura实例正在运行,并且数据库中有一些用户数据。然后运行你的Flutter应用,点击按钮,你应该能在控制台中看到从Hasura获取的用户数据。
注意事项
- 安全性:在实际应用中,避免在客户端代码中硬编码敏感信息,如
adminSecret
。考虑使用环境变量或安全的存储方式。 - 错误处理:示例代码中的错误处理非常基础,在实际应用中,你应该有更完善的错误处理和用户反馈机制。
- 依赖管理:确保定期更新你的依赖项,以获取最新的功能和安全修复。
希望这个示例代码能帮助你在Flutter项目中集成和使用mobidev_hasura
插件。如果你有其他问题,欢迎继续提问!