Flutter에서 Parse SDK로 사용자 쿼리 수행하기
Flutter에서 Parse로 사용자 쿼리하기
소개
일부 애플리케이션은 사용자를 직접 관리하거나 사용자 목록을 볼 수 있어야 합니다. Parse에는 쿼리 도구가 있으며 이를 사용하여 애플리케이션의 사용자를 나열할 수 있습니다.
이 가이드에서는 Parse Server용 Flutter 플러그인을 사용하여 Flutter 애플리케이션에서 사용자 쿼리를 수행하는 방법을 배웁니다.
목표
Flutter 앱을 위한 사용자 쿼리 기능을 Parse를 사용하여 구축하는 것입니다.
전제 조건
이 튜토리얼을 완료하려면 다음이 필요합니다:
- Back4app에 연결된 Flutter 앱.
- Android 또는 iOS를 실행하는 장치(또는 가상 장치).
쿼리 사용자 앱 이해하기
쿼리 사용자 프로세스를 더 잘 이해하기 위해 쿼리할 앱을 만들 것입니다. 이 가이드의 주요 초점이 Flutter와 Parse를 사용하는 것이므로 Flutter 애플리케이션 코드는 설명하지 않겠습니다.
다음 단계를 따르면, Back4App 데이터베이스에 작업을 저장하는 Todo 앱을 만들 수 있습니다.
시작해봅시다!
다음 단계를 따르면, Back4App 데이터베이스에 사용자 계정을 생성하는 Sign 앱을 만들 수 있습니다.
1 - 사용자 쿼리 앱 템플릿 만들기
이전 가이드에서 Flutter 프로젝트를 열고 Parse Server용 Flutter 플러그인으로 이동합니다. main.dart 파일을 열고 모든 코드를 정리한 후 다음으로 교체합니다:
1 import 'dart:async';
2
3 import 'package:flutter/material.dart';
4 import 'package:parse_server_sdk_flutter/parse_server_sdk.dart';
5
6 void main() async {
7 WidgetsFlutterBinding.ensureInitialized();
8
9 final keyApplicationId = 'YOUR_APP_ID_HERE';
10 final keyClientKey = 'YOUR_CLIENT_KEY_HERE';
11 final keyParseServerUrl = 'https://parseapi.back4app.com';
12
13 await Parse().initialize(keyApplicationId, keyParseServerUrl,
14 clientKey: keyClientKey, debug: true);
15
16 runApp(MaterialApp(
17 home: Home(),
18 ));
19 }
20
21 class Home extends StatefulWidget {
22 @override
23 _HomeState createState() => _HomeState();
24 }
25
26 class _HomeState extends State<Home> {
27 final _scaffoldKey = GlobalKey<ScaffoldState>();
28
29 @override
30 Widget build(BuildContext context) {
31 return Scaffold(
32 appBar: AppBar(
33 title: Text("Parse Query Users"),
34 backgroundColor: Colors.blueAccent,
35 centerTitle: true,
36 ),
37 key: _scaffoldKey,
38 body: FutureBuilder<List<ParseObject>>(
39 future: doUserQuery(),
40 builder: (context, snapshot) {
41 switch (snapshot.connectionState) {
42 case ConnectionState.none:
43 case ConnectionState.waiting:
44 return Center(
45 child: Container(
46 width: 100,
47 height: 100,
48 child: CircularProgressIndicator()),
49 );
50 default:
51 if (snapshot.hasError) {
52 return Center(
53 child: Text("Error...: ${snapshot.error.toString()}"),
54 );
55 } else {
56 if (snapshot.data!.isEmpty) {
57 return Center(
58 child: Text('None user found'),
59 );
60 }
61
62 return ListView.builder(
63 padding: EdgeInsets.only(top: 10.0),
64 itemCount: snapshot.data!.length,
65 itemBuilder: (context, index) {
66 final user = snapshot.data![index] as ParseUser;
67 final userVerified = user.emailVerified ?? false;
68 return ListTile(
69 title: Text(
70 'Username: ${user.username} - Verified: ${userVerified.toString()}'),
71 subtitle: Text(user.createdAt.toString()),
72 );
73 });
74 }
75 }
76 }));
77 }
78
79 Future<List<ParseObject>> doUserQuery() async {
80 return [];
81 }
82 }
83함수 debug의 Parse().initialize 매개변수가 true, Parse API 호출을 콘솔에 표시할 수 있습니다. 이 설정은 코드 디버깅에 도움이 될 수 있습니다. 릴리스 버전에서는 디버그를 비활성화하는 것이 좋습니다.
2 - 템플릿을 Back4app 프로젝트에 연결하기
애플리케이션 ID와 클라이언트 키 자격 증명을 찾으려면 Back4App 웹사이트로 이동하세요.
코드를 main.dart에서 Back4app의 애플리케이션 ID와 클라이언트 키 값으로 업데이트하세요.
- keyApplicationId = 앱 ID
- keyClientKey = 클라이언트 키
프로젝트를 실행하면 앱이 이미지와 같이 로드됩니다.

3 - 사용자 쿼리 코드
모든 Parse 쿼리 작업은 ParseQuery 객체 유형을 사용하며, 이는 앱 전반에 걸쳐 데이터베이스에서 특정 데이터를 검색하는 데 도움이 됩니다.
ParseQuery는 검색 메서드를 호출한 후에만 해결되므로, 쿼리를 설정하고 검색 메서드를 제출하기 전에 여러 수정자를 연결할 수 있습니다.
새로운 ParseQuery, 생성하려면 원하는 ParseObject 하위 클래스를 매개변수로 전달해야 하며, 이는 쿼리 결과를 포함할 것입니다.
아래에서 사용자 쿼리 예제를 볼 수 있습니다. 제공된 코드를 사용하여 doUserQuery 함수를 파일 main.dart. doUserQuery 내부의 코드를 다음으로 교체하세요:
1 QueryBuilder<ParseUser> queryUsers =
2 QueryBuilder<ParseUser>(ParseUser.forQuery());
3 final ParseResponse apiResponse = await queryUsers.query();
4
5 if (apiResponse.success && apiResponse.results != null) {
6 return apiResponse.results as List<ParseObject>;
7 } else {
8 return [];
9 }이 기능을 구축하려면 다음 단계를 따르세요:
- 인스턴스를 생성합니다.ParseQuery 클래스를 사용하고 ParseUser.forQuery에 매개변수로 전달합니다.
- 다음의 query 함수를 호출하여 데이터베이스에 대해 쿼리를 실행합니다.
- 작업이 성공하면, ParseUser 객체의 목록을 반환합니다. 만약 작업이 객체를 찾지 못하면, 성공 속성은 false가 되고 결과는 null이 됩니다.
전체 코드는 다음과 같아야 합니다:
1 Future<List<ParseObject>> doUserQuery() async {
2 QueryBuilder<ParseUser> queryUsers =
3 QueryBuilder<ParseUser>(ParseUser.forQuery());
4 final ParseResponse apiResponse = await queryUsers.query();
5
6 if (apiResponse.success && apiResponse.results != null) {
7 return apiResponse.results as List<ParseObject>;
8 } else {
9 return [];
10 }
11 }다음 구조를 사용하여 단일 사용자를 검색해 볼 수도 있습니다:
테스트하려면, Android Studio/VSCode에서 실행 버튼을 클릭하세요.
이 쿼리를 수행한 후, 앱의 사용자 목록은 다음과 같은 내용을 보여야 합니다:

완료되었습니다!
이 가이드의 끝에서, Flutter에서 Parse 사용자에 대한 쿼리를 수행하는 방법을 배웠습니다.